請考慮下表(表名:售)垂直和水平組在SQL
ID Customer Year Amount
1 A 2012 1000
2 B 2012 2000
3 A 2012 1500
4 C 2013 1000
5 B 2013 2000
我在找查詢其返回結果如下:
Customer Year2012 Year2013
A 2500 0
B 2000 2000
C 0 1000
請考慮下表(表名:售)垂直和水平組在SQL
ID Customer Year Amount
1 A 2012 1000
2 B 2012 2000
3 A 2012 1500
4 C 2013 1000
5 B 2013 2000
我在找查詢其返回結果如下:
Customer Year2012 Year2013
A 2500 0
B 2000 2000
C 0 1000
試試這個:
SELECT Customer,ISNULL([2012],0)as [2012],ISNULL([2013],0)as [2013]
FROM (
SELECT
Customer,[Year] as [year], Amount
FROM Mytest
) as s
PIVOT(SUM(AMOUNT)
FOR Year IN ([2012], [2013])) AS PVTTable
OUTPUT:
Customer 2012 2013
A 2500 0
B 2000 2000
C 0 1000
select Customer,
SUM(case when Year = '2012' then Amount else 0 end) as 'Year2012',
SUM(case when Year = '2013' then Amount else 0 end) as 'Year2013'
from Sale
group by Customer;
SQL小提琴 - http://sqlfiddle.com/#!2/f560b/4
執行下面的代碼:
SELECT * FROM customer
PIVOT(SUM(Amount) FOR Year IN ([2012],[2013]))
AS PVTTable
小心解釋爲什麼OP應該放棄其主鍵列? – DeanOC 2014-11-01 06:09:30
你剛纔2012年和2013? – sqluser 2014-11-01 05:10:31
如果查詢可以支持更多的年份要好得多。但只能支持兩年的怪物也是可愛的。 – Behnam 2014-11-01 05:14:08