2016-02-23 53 views
2

我正在運行SQL Server 2014,並且對視圖表運行以下Pivot查詢。我需要在我的T-SQL數據透視查詢中更改以實現此特定輸出?

(
    SELECT [ResID], [F&B], [LEISURE], [SPA] 

    FROM (SELECT * FROM [EXTRASEXPENDITURE] 

    )m 

    PIVOT (SUM([FOC_NETAMOUNT]) 

    FOR [CATEGORY] IN ([F&B], [LEISURE], [SPA] 

    ))AS PVTTABLE) 

    ORDER BY [ResID] ASC 

電流輸出的提取物如下所示:

ResID F&B LEISURE SPA 
    1024 210.00 0   0 
    1024 0  125.00 0 
    1136 0  500.00 0 
    1136 0  0   325.00 

我期待我的輸出爲如下面的表(具有在渣油級分組完成):

 ResID F&B LEISURE SPA 
    1024 210.00 125.00  0 
    1136 0  500.00  325.00 

我應該在我的透視查詢中更正以達到上述結果?

附加註釋:

在 'EXTRASEXPENDITURE' 查看錶顯示信息如下:

ResID FOC_Date Category FOC_NetAmount 
1136  2015-10-03 SPA   325.00 
1136  2015-10-12 LEISURE  500.00 
1136 .......... 
+0

是否嘗試將'SELECT * FROM [EXTRASEXPENDITURE]'更改爲'SELECT RESID,Category,FOC_NetAmount FROM [EXTRASEXPENDITURE]'?,不包括日期列。 –

回答

3

除去不需要的柱從Pivot源查詢的,這應該是這樣的

SELECT [ResID], 
     [F&B], 
     [LEISURE], 
     [SPA] 
FROM (SELECT ResID, 
       Category, 
       FOC_NetAmount 
     FROM Yourtable) a 
     PIVOT (Sum([FOC_NETAMOUNT]) 
      FOR [CATEGORY] IN ([F&B], 
           [LEISURE], 
           [SPA])) PVTTABLE 
ORDER BY [ResID] ASC 
+0

不錯,乾淨... – Veljko89

+0

我不認爲這會奏效。你必須使用一個子查詢來顯式選擇'PIVOT'操作所需的行。 –

+0

@GiorgosBetsos - 請運行查詢並返回 –

1

試試這個:

SELECT [ResID], 
     COALESCE([F&B], 0) AS [F&B], 
     COALESCE([LEISURE], 0) AS [LEISURE], 
     COALESCE([SPA], 0) AS [SPA] 
FROM (
    SELECT [ResID], [Category], [FOC_NetAmount] 
    FROM [EXTRASEXPENDITURE]) AS src 
PIVOT (
    SUM([FOC_NETAMOUNT]) 
    FOR [CATEGORY] IN ([F&B], [LEISURE], [SPA]))AS PVTTABLE 
ORDER BY [ResID] ASC 
+0

謝謝。很好地工作! – user3115933