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