当前位置: 代码迷 >> Sql Server >> ,嵌套汇总查询方法
  详细解决方案

,嵌套汇总查询方法

热度:64   发布时间:2016-04-24 08:50:08.0
求助,嵌套汇总查询方法
本帖最后由 half_fire 于 2015-10-15 07:40:03 编辑

表1:d_stock
d_prd_no Ι d_product  Ι d_pur_qty

表2:d_sale
d_prd_no Ι d_qty

表3:d_produce
d_prd_no Ι d_prd_qty

三个表,全部用d_prd_no关联,想要的结果如下:

1、首先把表1,d_stock的值全部列出
2、表2,d_sale中按d_prd_no分类汇总d_qty,跟表1中d_prd_no相同的,在后面列出汇总值,没有就标一个‘0’
3、表3,d_produce中按d_prd_no分类汇总d_prd_qty,跟表1中d_prd_no相同的,在后面列出汇总值,没有就标一个‘0 ’

[                             表1                           ][    表2    ][      表3     ]
d_prd_no Ι d_product  Ι d_pur_qty   Ι  d_qty  Ι d_prd_qty
001                     A               100                 50          50
002                     B                200                0            200
003                     C               300                 100        0

------解决思路----------------------
--差不多像这样

select a.*,b.d_qty,c.d_prd_qty from d_stock a left join
(select d_prd_no,SUM(d_qty) d_qty from d_sale group by d_prd_no) b
on a.d_prd_no=b.d_prd_no left join
(select d_prd_no,SUM(d_prd_qty) d_prd_qty from d_produce group by d_prd_no) c
on c.d_prd_no=a.d_prd_no
------解决思路----------------------
select a.*, isnull(b.d_qty, 0) d_qty, isnull(c.d_prd_qty, 0) d_prd_qty
  from d_stock a
  left join (select d_prd_no, SUM(d_qty) d_qty from d_sale group by d_prd_no) b
    on a.d_prd_no = b.d_prd_no
  left join (select d_prd_no, SUM(d_prd_qty) d_prd_qty
               from d_produce
              group by d_prd_no) c
    on c.d_prd_no = a.d_prd_no