SQL處理庫存與銷售,先進先出原則

2021-05-02 09:15:20 字數 2681 閱讀 3474

--庫存表

create

table

t( id

intidentity(1

,1),name

varchar(50

),--

商品名稱

j int

, --

入庫數量

c int

,       

--出庫數量

jdate

datetime

--入庫時間

)insert

into

t(name,j,c,jdate)

select'a

',100,0,

'2007-12-01

'insert

into

t(name,j,c,jdate)

select'a

',200,0,

'2008-01-07

'insert

into

t(name,j,c,jdate)

select'b

',320,0,

'2007-12-21

'insert

into

t(name,j,c,jdate)

select'a

',100,0,

'2008-01-15

'insert

into

t(name,j,c,jdate)

select'b

',90,

0,'2008-02-03

'insert

into

t(name,j,c,jdate)

select'a

',460,0,

'2008-02-01

'insert

into

t(name,j,c,jdate)

select'a

',510,0,

'2008-03-01'go

create

proc

wsp@name

varchar(50

),@cost

int--

,--銷售量

--@returns int output --該貨物的庫存是否夠(不夠:-1;夠:1)

as--

先得出該貨物的庫存是否夠

declare

@spare

float

--剩餘庫存

select

@spare

=sum

(j)-

sum(c)

from

t where

name

=@nameif(

@spare

>=

@cost

)begin

--根據入庫日期採用先進先出原則對貨物的庫存進行處理

update

t setc=

case

when

(select

@cost

-isnull

(sum

(j),0)

+isnull

(sum

(c),0)

from

t where

name

=@name

andjdate

<=

a.jdate

andj

!=c)

>=

0then

a.j

else

case

when

(select

@cost

-isnull

(sum

(j),0)

+isnull

(sum

(c),0)

from

t where

name

=@name

andjdate

<

a.jdate

andj

!=c)

<

0then

0else

(select

@cost

-isnull

(sum

(j),0)

+isnull

(sum

(c),0)

+a.c

from

t where

name

=@name

andjdate

<

a.jdate

andj

!=c)

endend

from

t a

where

name

=@name

andj

!=c

endelse

raiserror('

庫存不足',

16,1)   

return

go--

測試:exec

wsp

@name='

a',@cost

=390

select

*fromt--

刪除測試環境

drop

table

tdrop

proc

wsp

「先進先出」的庫存處理

很經典的 先進先出 的庫存處理的sql語句。create table tmp 建立臨時表 tmp id int identity 1,1 建立列id,並且每次新增一條記錄就會加1 單價 decimal 18,2 not null 數量 decimal 18,2 not null 已出數量 decim...

基於C語言的小型超市庫存與銷售管理系統

1 需求分析 1.1 登陸 管理員和售貨員可通過各自的賬號 密碼分別進入管理員和售貨員的子系統。對於輸入不在系統所儲存的賬號或輸入的賬號密碼不匹配時,要求使用者重新輸入。1.2 使用者管理 管理員使用者可瀏覽系統內所有的使用者的賬號 密碼 許可權類別,可新增使用者,可刪除使用者。1.3 庫存管理 管...

基於C語言的小型超市庫存與銷售管理系統

1 需求分析 1.1 登陸 管理員和售貨員可通過各自的賬號 密碼分別進入管理員和售貨員的子系統。對於輸入不在系統所儲存的賬號或輸入的賬號密碼不匹配時,要求使用者重新輸入。1.2 使用者管理 管理員使用者可瀏覽系統內所有的使用者的賬號 密碼 許可權類別,可新增使用者,可刪除使用者。1.3 庫存管理 管...