Re: [SQL ] 请问多个sum的问题

楼主: cutekid (可爱小孩子)   2018-01-31 10:36:56
;with tb1 as (
select t2.商品编号,t2.时间,t2.销量
from all t1
inner join m106 t2 on t1.商品编号 = t2.商品编号
where t2.进出口 = '进口' and left(t2.时间,3) = '106'
)
select *
from tb1
pivot (
sum(销量) for 时间 in ([106Q1],[106Q2],[106Q3],[106Q4])
) as pvt
※ 引述《OldChuang (老庄)》之铭言:
: 数据库名称:sql server 2008
: 数据库版本:2008
: 内容/问题描述:
: 假设资料内容如下图的左边两个表格
: https://imgur.com/a/7iQXd
: all:所有商品编号
: m106:各季进出口的资料
: 现在想将各产品的进口依照各季加总列出
: 并对应all的所有编号
: 以下是我的写法(参考过往的写法改的)
: 但是之后每加一季或是要往前查,编码就会改更长
: 想问问有无更好的写法
: 或是...只能抓到excel用枢纽来查...
: select '商品'=a.商品编号,
: '103Q1'=ISNULL(b03.P106Q1,0),'106Q2'=ISNULL(b04.P106Q2,0),),'106Q3'=ISNULL(b05.P106Q3,0)
: from all a
: left join
: ( select 商品编号,'p106Q1'=sum(a.销量) from m106 a
: where a.进出口'进口' and a.时间='106Q1'
: group by 商品编号 ) b03
: on a.商品编号=b03.商品编号
: left join
: ( select 商品编号,'p106Q2'=sum(a.销量) from m106 a
: where a.进出口'进口' and a.时间='106Q2'
: group by 商品编号 ) b04
: on a.商品编号=b04.商品编号
: left join
: ( select 商品编号,'p106Q3'=sum(a.销量) from m106 a
: where a.进出口'进口' and a.时间='106Q3'
: group by 商品编号 ) b05
: on a.商品编号=b05.商品编号
: order by 商品
作者: OldChuang (老庄)   2018-01-31 19:52:00
可以唷~~谢谢您~~

Links booklink

Contact Us: admin [ a t ] ucptt.com