2016-01-18 61 views
0

我有一個Microsoft SQL查詢的問題。我想將查詢結果中的列添加到每個特定行中。Microsoft SQL結果行列

SQL:

CREATE TABLE #TempResult 
(
    rok int, nazev varchar(500), kod int, JNC float, JPC float, CNC float, CPC float, ObchPriraz float, Marze float, vynos float 
) 
INSERT #TempResult Exec pOlapData 133,1,0,'' 
SELECT rok,nazev,JNC FROM #TempResult 

DROP TABLE #TempResult 

這是結果:

This is the Result

而我的目標是要添加列(也許創建另一個臨時表):JNC 2013,JNC 2014年,JNC 2015年...每年都有相同的名字。

預期的結果:

 name    | JNC 2013 | JNC 2014 | JNC 2015 
    -------------------------------------------------------------- 
    name of the firm  number  number  number 
+1

如果您擁有固定數量的預期'JNC'年份列,那麼比簡單的純粹的SQL數據透視將起作用。如果您希望可變數量的列,那麼您將需要使用動態SQL。 –

+0

它是固定的數量4.你能幫助我的「樞軸」?或者顯示一些例子?我會很感激:) – user3540118

+0

看看我的答案在下面。它假定「公司名稱」實際上是「nazev」列。 –

回答

1

這是一個純粹的SQL查詢樞紐,這將給你你想要的結果。它假設您從2013年到2016年(包括2016年)擁有4個固定列。當然,您可以對其進行修改以適應您的確切需求。

SELECT nazev AS name, 
    SUM(CASE WHEN rok = 2013 THEN JNC ELSE 0 END) AS 'JNC 2013', 
    SUM(CASE WHEN rok = 2014 THEN JNC ELSE 0 END) AS 'JNC 2014', 
    SUM(CASE WHEN rok = 2015 THEN JNC ELSE 0 END) AS 'JNC 2015', 
    SUM(CASE WHEN rok = 2016 THEN JNC ELSE 0 END) AS 'JNC 2016' 
FROM #TempResult 
GROUP BY nazev 
+1

非常感謝。它工作得很好。現在,我可以繼續前進並根據需要對其進行修改:)再次感謝。 – user3540118