34,588
社区成员
发帖
与我相关
我的任务
分享
货品表
---------
ID 货物名称 品牌
1 电冰箱 海尔
2 电视机 海尔
3 电脑 海尔
4 收音机 海尔
5 电冰箱 苏泊尔
6 电视机 苏泊尔
7 电脑 苏泊尔
8 收音机 苏泊尔
销售表
----------------------
货品ID 销售数 退货数
2 1 1
3 44 2
5 12 8
4 12
1 5
1 77 16
3 22 9
采购表
---------------------
货品ID 采购数 退货数
1 100 7
3 50
5 60 5
2 22
4 15
4 8
2 1
3 55
求---
库存表
------------------------
ID 品牌 名称 库存数
(采购数-退货数)-(销售数-退货数)
--测试数据
if not object_id(N'Tempdb..#货品表') is null
drop table #货品表
Go
Create table #货品表([ID] int,[货物名称] nvarchar(23),[品牌] nvarchar(23))
Insert #货品表
select 1,N'电冰箱',N'海尔' union all
select 2,N'电视机',N'海尔' union all
select 3,N'电脑',N'海尔' union all
select 4,N'收音机',N'海尔' union all
select 5,N'电冰箱',N'苏泊尔' union all
select 6,N'电视机',N'苏泊尔' union all
select 7,N'电脑',N'苏泊尔' union all
select 8,N'收音机',N'苏泊尔'
GO
if not object_id(N'Tempdb..#销售表') is null
drop table #销售表
Go
Create table #销售表([货品ID] int,[销售数] int,[退货数] int)
Insert #销售表
select 2,1,1 union all
select 3,44,2 union all
select 5,12,8 union all
select 4,12,null union all
select 1,5,null union all
select 1,77,16 union all
select 3,22,9
GO
if not object_id(N'Tempdb..#采购表') is null
drop table #采购表
Go
Create table #采购表([货品ID] int,[采购数] int,[退货数] int)
Insert #采购表
select 1,100,7 union all
select 3,50,null union all
select 5,60,5 union all
select 2,22,null union all
select 4,15,null union all
select 4,8,null union all
select 2,1,null union all
select 3,55,null
Go
--测试数据结束
SELECT ID,
品牌,
货物名称,
SUM(t1.数量 - t2.数量) AS 库存数
FROM #货品表
LEFT JOIN
(
SELECT 货品ID,
SUM(ISNULL(采购数, 0) - ISNULL(退货数, 0)) AS 数量
FROM #采购表
GROUP BY 货品ID
) t1
ON ID = t1.货品ID
LEFT JOIN
(
SELECT 货品ID,
SUM(ISNULL(销售数, 0) - ISNULL(退货数, 0)) AS 数量
FROM #销售表
GROUP BY 货品ID
) t2
ON ID = t2.货品ID
GROUP BY ID,
品牌,
货物名称;