2015-12-07 46 views
0

我正在努力在交易數據表上生成一個數據透視表。數據我有表如下:支持多列

+------------+------------+-----------+------------+ 
|Date  |Store  |Customer |Value  | 
+------------+------------+-----------+------------+ 
|01/12/15 |StoreA  |Cust1  |3.80  | 
|01/12/15 |StoreB  |Cust2  |2.40  | 
|01/12/15 |StoreC  |Cust1  |3.80  | 
|02/12/15 |StoreC  |Cust2  |1.50  | 
|02/12/15 |StoreA  |Cust2  |1.50  | 
|02/12/15 |StoreA  |Cust2  |2.00  | 

我試圖從擺動得到的結果如下:

+-------+-----------+--------+--------+--------+--------+--------+--------+ 
|Date |Customer |StoreA |StoreB |StoreC |StoreAct|StoreBct|StoreCct| 
+--------+----------+--------+--------+--------+--------+--------+--------+ 
|01/12/15|Cust1  |3.80 |  |3.80 |1  |  |1  | 
|01/12/15|Cust2  |2.40 |  |  |1  |  |1  | 
|02/12/15|Cust2  |3.50 |  |1.50 |2  |  |  | 

隨着價值StoreA是所有交易的太陽在該日期和StoreAct是一天內該商店的交易次數。

經過一番搜索,我試過以下,但它不會產生期望的結果:

SELECT * 
FROM (
    SELECT 
     Date, Customer, Value, Store, 1 as TransCount, Store+'ct' as storecount 
    FROM SourceTable 
) as s 
PIVOT 
(
    SUM(Value) 
    FOR Customer IN (StoreA, StoreB, StoreC) 
)AS pvt 

PIVOT 
(
SUM(Transcount) 
FOR customer IN (StoreAct, StoreBct, StoreCct) 
)AS pvt 

所有和任何幫助將不勝感激,謝謝

+0

一個你在說'因爲客戶在(StoreA,......'時,你應該說'店鋪IN(StoreA,...' – JamieD77

回答

0

你樞語句使用For Customer而不是您嘗試旋轉的實際列。

您還應該使用Count() Over()窗口函數代替1 as TransCount以獲取正確的計數。

這可以通過很容易地替換語句中的select語句和列名中的和來動態地完成。

SELECT 
    [Date], 
    Customer, 
    SUM(StoreA) StoreA, 
    SUM(StoreB) StoreB, 
    SUM(StoreC) StoreC, 
    SUM(StoreAct) StoreAct, 
    SUM(StoreBct) StoreBct, 
    SUM(StoreCct) StoreCct 
FROM 
    (SELECT 
     Date, 
     Customer, 
     Value, 
     Store, 
     COUNT(*) OVER (PARTITION BY date,customer,store) AS TransCount, 
     Store + 'ct' AS storecount 
    FROM 
     SourceTable 
    ) AS s 
PIVOT 
(SUM(Value) FOR [Store] IN ([StoreA],[StoreB],[StoreC])) AS pvt 
PIVOT 
(SUM(Transcount) FOR storecount IN ([StoreAct],[StoreBct],[StoreCct])) AS pvt 
GROUP BY 
    [Date], 
    Customer 
+0

感謝您的迅速和正確的響應,它解決了我的問題和整潔的佈局,讓我可以理解它是如何工作的。感謝您的幫助! – Sapling