2012-01-09 221 views
0

我有一個存儲過程中,我想返回結果集看起來像這樣:分組結果集數據

id | student | term1 | term2 

的問題是,數據不存儲這樣的分貝。因此,查詢將生成一個看起來像這樣的結果集:

id | student | termNo | termValue 
1 | lorem | 1  | someValue 
2 | ipsum | 2  | anotherValue 

是否有任何簡單的方法來轉換此。結果集很大,所以我不想做出幾個明顯的解決方案。

希望這是可以理解的=)

+0

方面有多少....你想要它是動態的嗎? – Lamak 2012-01-09 18:21:16

+0

4方面存在,不必是動態的 – johan 2012-01-09 18:24:32

回答

3

好,根據你的意見,你可以這樣做:

SELECT id, 
     student, 
     MIN(CASE WHEN termNo = 1 THEN termValue END) term1, 
     MIN(CASE WHEN termNo = 2 THEN termValue END) term2, 
     MIN(CASE WHEN termNo = 3 THEN termValue END) term3, 
     MIN(CASE WHEN termNo = 4 THEN termValue END) term4 
FROM YourTable 
GROUP BY id, student 

SELECT id, student, [1] AS Term1, [2] AS Term2, [3] AS Term3, [4] AS Term4 
FROM YourTable T 
PIVOT(MIN(termValue) FOR termNo IN ([1],[2],[3],[4])) AS PT 
+0

請更正「termNo = 1」語句,以反映正確的值(1,2,3,4)。雖然第一個代碼段可能很醜(對不起),但它確實可以保證更高效的查詢。 – 2012-01-09 20:25:59

+0

@Norla - 哎呀,顯然我遭受了ctrl + c ctrl + v的糟糕情況。感謝您的評論。 – Lamak 2012-01-09 20:31:09