2016-11-04 52 views
1

我有一個SQL結果集如下所示:如何平鋪/旋轉sql結果集?

Sql Result Set

我怎樣才能得到這樣的結果對每個ItemCode顯示只有一排?使用GROUP BY似乎不起作用,因爲它需要我包含阻止我正在尋找的分組的列。

我寫的查詢是從一個表中爲每個倉庫提取一行數據,我試圖用一種方式對它進行格式化,每個ItemCode只有一行。我認爲什麼是透視我試圖做...

這裏是我的查詢看起來像目前術語:

SELECT 
    ItemCode, 
    ISNULL((SELECT Quantity WHERE WhsCode = 10), 0) 'Whs10QTY', 
    ISNULL((SELECT Quantity WHERE WhsCode = 20), 0) 'Whs20QTY', 
    ISNULL((SELECT SalesAmt WHERE WhsCode = 10), 0) 'Whs10SalesAmt', 
    ISNULL((SELECT SalesAmt WHERE WhsCode = 20), 0) 'Whs20SalesAmt', 
    ISNULL((SELECT GrssProfit WHERE WhsCode = 10), 0) 'Whs10GrssProfit', 
    ISNULL((SELECT GrssProfit WHERE WhsCode = 20), 0) 'Whs20GrssProfit' 
FROM 
    @Table t 

注:我可能需要幫助的措詞和retitling這個問題,以使它對社區更有用。感謝任何幫助傢伙!

回答

1

我認爲你可以簡化這個如此:

Select ItemCode 
     ,Whs10QTY  = sum(case when WhsCode = 10 then Quantity else 0 end) 
     ,Whs20QTY  = sum(case when WhsCode = 20 then Quantity else 0 end) 
     ,Whs10SalesAmt = sum(case when WhsCode = 10 then SalesAmt else 0 end) 
     ,Whs20SalesAmt = sum(case when WhsCode = 20 then SalesAmt else 0 end) 
     ,Whs10GrssProfit = sum(case when WhsCode = 10 then GrssProfit else 0 end) 
     ,Whs20GrssProfit = sum(case when WhsCode = 20 then GrssProfit else 0 end) 
From @Table t 
Group By ItemCode 
+0

謝謝主席先生!這工作。 – Dezryth

+0

@Dezryth樂於助人。 –