|  | 
 
 发表于 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 行)
 
 
 
 | 
 |