作者cutekid (可爱小孩子)
看板Database
标题Re: [SQL ] 请问多个sum的问题
时间Wed Jan 31 10:36:56 2018
;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 商品
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.170.106.153
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1517366219.A.6E4.html
※ 编辑: cutekid (118.170.106.153), 01/31/2018 11:43:09
1F:推 OldChuang: 可以唷~~谢谢您~~ 01/31 19:52