34,587
社区成员
发帖
与我相关
我的任务
分享
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([合同号] nvarchar(22),[商品编号] nvarchar(22),[商品名称] nvarchar(21),[工厂] nvarchar(22),[数量] int,[进出] nvarchar(21))
Insert #T
select N'P1',N'G1',N'a',N'S1',100,N'进' union all
select N'P2',N'G2',N'b',N'S2',100,N'进' union all
select N'P1',N'G1',N'a',N'S1',50,N'出'
Go
--测试数据结束
SELECT 合同号,
商品编号,
商品名称,
工厂,
SUM( CASE
WHEN 进出 = '进' THEN
数量
ELSE
-数量
END
) 数量
,
SUM( CASE
WHEN 进出 = '进' THEN
0
ELSE
数量
END
) 已出
FROM #T
GROUP BY 合同号,
商品编号,
商品名称,
工厂;
select 合同号,商品编码,商品名称,工厂,
SUM(case when 进出='进' then 数量 else -1*数量 end) as 数量,
SUM(case when 进出='出' then 数量 else 0 end) as 已出
from table
group by 合同号,商品编码,商品名称,工厂
select 合同号,商品编码,商品名称,工厂,
SUM(case when 进出='进' then 数量 else -1*数量 end) as 数量
from table
group by 合同号,商品编码,商品名称,工厂
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([合同号] nvarchar(22),[商品编号] nvarchar(22),[商品名称] nvarchar(21),[工厂] nvarchar(22),[数量] int,[进出] nvarchar(21))
Insert #T
select N'P1',N'G1',N'a',N'S1',100,N'进' union all
select N'P2',N'G2',N'b',N'S2',100,N'进' union all
select N'P1',N'G1',N'a',N'S1',50,N'出'
Go
--测试数据结束
SELECT 合同号,
商品编号,
商品名称,
工厂,
SUM( CASE
WHEN 进出 = '进' THEN
数量
ELSE
-数量
END
) 数量
FROM #T
GROUP BY 合同号,
商品编号,
商品名称,
工厂;