首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

多表相减的有关问题,请前辈帮忙指教

2012-01-14 
多表相减的问题,请前辈帮忙指教tb1(销售)产品名称代码数量A100B100C100D100tb2(退货)产品名称代码数量A5B5

多表相减的问题,请前辈帮忙指教
tb1(销售) 
产品名称代码 数量
A 100
B 100
C 100
D 100

tb2(退货)
产品名称代码 数量
A 5
B 5
C 5

tb3(报损)
产品名称代码 数量
B 5
C 5
D 5

想按产品名称代码 数量上把tb1-tb2-tb3得出 实际销售数量表
产品名称代码 数量
A 95
B 90
C 90
D 95

还请赐教!

[解决办法]

SQL code
select 产品名称代码,数量-isnull((select sum(数量) from tb2 where 产品名称代码=a.产品名称代码),0)-isnull((select sum(数量) from tb3 where 产品名称代码=a.产品名称代码),0)from tb1 a
[解决办法]
SQL code
select tb1.产品名称代码,sum(isnull(tb1.数量,0)) -sum(isnull(tb2.数量,0))-sum(isnull(tb3.数量,0)) -sum(isnull(tb4.数量,0)) from  tb1 left join tb2 on tb1.产品名称代码 =tb2.产品名称代码 left join tb3 on tb1.产品名称代码 =tb3.产品名称代码 left join tb4 on tb1.产品名称代码 =tb4.产品名称代码
[解决办法]
SQL code
select  a.产品名称代码,  a.数量-isnull(sum(b.数量),0)from   tb1 a,   (select * from tb2 union  select * from tb3)bwhere   a.产品名称代码=b.产品名称代码group by   a.产品名称代码,a.数量
[解决办法]
SQL code
--上边全写成tb1了select 产品名称代码,数量=sum(数量*mark)from(select *,1 as mark from tb1union allselect *,-1 as mark from tb2union allselect *,-1 as mark from tb3) t group by 产品名称代码
[解决办法]
SQL code
select a.产品名称代码,a.数量-isnull(sum(b.数量),0)from tb1 a,(select * from tb2 union  select * from tb3)bwhere  a.产品名称代码=b.产品名称代码group by a.产品名称代码,a.数量 

热点排行
Bad Request.