2014-10-28 37 views
1

我有一樣的列和值的表:SQL服務器數據透視表的問題

Records Status  CustName  Amount 

71  Blocked  Customer_1 132171 
11  Booked  Customer_1 19974 
3  Cancelled Customer_1  3900 

我想編寫一個查詢來獲取數據爲:

CustName Blocked_Recs Blocked_amount Booked_Recs Booked_amount Cancelled_Recs Cancelled_amount 
Customer_1 71    132171   11   19974   3    3900 

的問題涉及到SQL server 2008 R2

究竟應該查詢什麼?

回答

1

這裏是如何做到這一點:

Select r1.c, 
     r1.[Blocked], 
     r2.[Blocked], 
     r1.[Booked], 
     r2.[Booked], 
     r1.[Cancelled], 
     r2.[Cancelled] 

from(select * from (select r, c, s from t) t 
pivot(max(r) for s in([Blocked],[Booked],[Cancelled]))p) r1 

join 

(select * from (select a, c, s from t) t 
pivot(max(a) for s in([Blocked],[Booked],[Cancelled]))p) r2 on r1.c = r2.c 

這裏是提琴http://sqlfiddle.com/#!6/acf78