当前位置: 代码迷 >> Sql Server >> 两表连接汇总数目解决方法
  详细解决方案

两表连接汇总数目解决方法

热度:77   发布时间:2016-04-24 18:54:45.0
两表连接汇总数目
1.表A:
WL<物料>  ZJ<质检>
1010302402+C    是
1010302402+B    否
1011102402+E    是

2.表B:
BM<编码>        PH<票号>  GYS<供应商>   RKS<入库数>
1010302402+C   8A9-2        JNN      100
1010302402+C   8A9-2        JNN      100
1011102402+E   8A9-6        JNN      200
1011102402+E   9C9-3         BM      200
1011102402+E   9C9-3         BM      300
1010302402+B    8A9-2         CC      400
1010302403+B   8A9-2         CC      100
1010302403+B   8A9-2         CC      100

3.WL<物料>和BM<编码>关联AB表,
要根据BM<编码>PH<票号>GYS<供应商>三者完全相同来汇总数目。
需要质检的生成一张质检表1,不需要质检的生成非质检表2。
怎么写sql语句,谢谢大神们:
质检表1:
BM<编码>           PH<票号>    GYS<供应商>   RKS<入库数>
1010302402+C        8A9-2    JNN           200
1011102402+E     8A9-6    JNN           200
1011102402+E     9C9-3     BM           500
非质检表2:
BM<编码>           PH<票号>    GYS<供应商>  RKS<入库数>
1010302403+B     8A9-2     CC            600
------解决方案--------------------
试试这个:


--1.第一个问题
select BM,PH,GYS,sum(RKS) as RKS
from 表B
where BM in (select WL 表A where ZJ = '是')
group by BM,PH,GYS


--2.第二个问题
select BM,PH,GYS,sum(RKS) as RKS
from 表B
where BM in (select WL 表A where ZJ = '否')
group by BM,PH,GYS

------解决方案--------------------

-- 质检表1
select b.BM,b.PH,b.GYS,sum(b.RKS) '汇总数'
 from 表B b
 inner join 表A a on b.BM=a.WL
 where a.ZJ='是'
 group by b.BM,b.PH,b.GYS
 
-- 非质检表2
select b.BM,b.PH,b.GYS,sum(b.RKS) '汇总数'
 from 表B b
 inner join 表A a on b.BM=a.WL
 where a.ZJ='否'
 group by b.BM,b.PH,b.GYS

------解决方案--------------------
exists里面的东西,不用管
  相关解决方案