2016-09-08 47 views
1

2008年SQLSERVER,我有一個表是這樣的:在SQLSERVER,如何加入多行一列成單行多列

+--------+--------------------+--------------+ 
some_key | some_discriminator | some_column 
-------- | ------------------ | ------------- 
K1  | D1     | V1 
K1  | D2     | V2 
K2  | D1     | V3 
K2  | D2     | V4 

,我想運行一個查詢這產生:

+--------+------+-------- 
some_key |D1 | D2 
---------|--------------- 
K1  | V1 | V2 
K2  | V3 | V4 
+0

你可以在這篇文章中找到部分答案=> http://stackoverflow.com/questions/39390972/sql-server-pivot-only-on-a-part-of-the-result/39392731#39392731 –

回答

2

一個簡單的支點查詢可能會滿足您的需求:

SELECT some_key, 
     MAX(CASE WHEN some_discriminator = 'D1' THEN some_column ELSE NULL END) AS D1, 
     MAX(CASE WHEN some_discriminator = 'D2' THEN some_column ELSE NULL END) AS D2 
FROM yourTable 
GROUP BY some_key 

分組工作,因爲MAX忽略NULL值和MAX單個VARCHAR返回該字符串。

但是,如果您想要在旋轉結果中顯示多列或動態列,這可能不合適。

+0

感謝您的迴應蒂姆。我應該提到列類型。 some_column包含varchars。我收到一個錯誤,因爲SUM運算符不期待varchar。 –

+0

@KevinStembridge對不起,我應該使用'MAX'而不是'SUM'。 –

+0

太棒了。非常感謝你。 –