|
发表于 2020-1-29 09:27:02
|
显示全部楼层
以上语句改一下楼主的表名,把test_t 改为test就行了。
create table test_t --出入库表
(
id int identity(1,1), --主键
货物类别 varchar(20),
货物名称 varchar(20),
货物规格 varchar(20),
货物价格 money,
出入库日期 datetime,
数量 int,
单据编号 varchar(20),
出入库状态 char(1),--1代表货物入库,0代表货物出库,2代表出库退货
领用部门 varchar(20),
领用人 varchar(20)
)
--以下是入库数据
insert into test_t select 'a类','a1','1*2',1000,'2007-1-1',10,'rk-1','1',null,null
insert into test_t select 'a类','a1','1*2',1500,'2007-1-1',15,'rk-2','1',null,null
insert into test_t select 'a类','a2','1*3',2000,'2007-1-1',20,'rk-3','1',null,null
--以下是出库数据
insert into test_t select 'a类','a1','1*2',1000,'2007-1-1',5,'ck-1','0','部门1','张三'
insert into test_t select 'a类','a1','1*2',1500,'2007-1-1',10,'ck-2','0','部门1','张三'
insert into test_t select 'a类','a2','1*3',2000,'2007-1-1',10,'ck-3','0','部门1','张三'
--以下是出库退货数据
insert into test_t select 'a类','a1','1*2',1000,'2007-1-1',1,'tk-1','2','部门1','张三'
insert into test_t select 'a类','a1','1*2',1500,'2007-1-1',2,'tk-2','2','部门1','张三'
insert into test_t select 'a类','a2','1*3',2000,'2007-1-1',3,'tk-3','2','部门1','张三'select 货物类别, 货物名称, 货物规格 , 货物价格 ,
库存结余数量=(select sum(case when 出入库状态 in(1,2) then 数量 else -数量 end)from test_t where 货物名称=ta.货物名称 and 货物规格=ta.货物规格 and 货物价格=ta.货物价格),
库存结余金额=(select sum(case when 出入库状态 in(1,2) then 数量*货物价格 else -数量*货物价格 end)from test_t where 货物名称=ta.货物名称 and 货物规格=ta.货物规格 and 货物价格=ta.货物价格),
出入库日期
from test_t ta
group by 货物类别, 货物名称, 货物规格 , 货物价格 ,出入库日期
货物类别 货物名称 货物规格 货物价格 库存结余数量 库存结余金额 出入库日期
-------------------- -------------------- -------------------- --------------------- ----------- --------------------- ------------------------------------------------------
a类 a1 1*2 1000.0000 6 6000.0000 2007-01-01 00:00:00.000
a类 a1 1*2 1500.0000 7 10500.0000 2007-01-01 00:00:00.000
a类 a2 1*3 2000.0000 13 26000.0000 2007-01-01 00:00:00.000
(所影响的行数为 3 行)
|
|