2017-05-02 48 views
0

這裏我有一個簡單的表名稱Cust與CustName,PurshaseItem,Price.I編寫了一個簡單的PIVOT查詢其旋轉數據,但我wana以顯示總和的動量 在這裏,我需要總計如何在SQl樞軸查詢中執行求和操作

樞軸查詢

[![select custName, 

     \[Shoes\] as Shoes, 
     \[Colgate\] as Colgate, 
     \[Cloths\] as Cloths 

FROM 
(select custName,Price,PurchaseItem FROM Cust 
) AS PIVOTData 

PIVOT(
sum(Price) FOR PurchaseItem 
IN (Shoes,Colgate,Cloths) 
)AS PIVOTING][1]][1] 


custname  Shoes Colgate  GrandTotal 
xyz   12   10   22 
lmn   1   2   3 
+0

添加樣本數據和預期結果 –

回答

2

你可以試試這個:

CREATE TABLE CUST (custName VARCHAR(10), 
     price INT, 
     PurchaseItem VARCHAR(10) 
     ) 
     INSERT INTO CUST VALUES ('aaaa', 1,'Colgate') 
     INSERT INTO CUST VALUES ('aaaa', 2,'Shoes') 
     INSERT INTO CUST VALUES ('aaaa', 3,'Cloths') 
     INSERT INTO CUST VALUES ('bbbb', 4,'Colgate') 
     INSERT INTO CUST VALUES ('bbbb', 5,'Shoes') 
     INSERT INTO CUST VALUES ('bbbb', 6,'Cloths') 


select * 
FROM 
(select custName, SUM(Price) AS Price , 
    CASE WHEN GROUPING(PurchaseItem)=1 THEN 'TOT_PRICE' ELSE PurchaseItem END AS PurchaseItem 
    FROM Cust 
    group by rollup(PurchaseItem), custName 
) AS PIVOTData 

PIVOT(sum(Price) FOR PurchaseItem IN (Shoes,Colgate,Cloths,TOT_PRICE)) AS PIVOTING 

輸出:

custName Shoes  Colgate  Cloths  TOT_PRICE 
---------- ----------- ----------- ----------- ----------- 
aaaa  2   1   3   6 
bbbb  5   4   6   15 
1

您只需添加到您的選擇

coalesce([Shoes], 0) + coalesce([Colgate], 0) + coalesce([Cloths], 0) as GranTotal 

當其中一個結果是null時,需要​​3210以避免奇怪的行爲。