2017-06-22 66 views
0

我有以下3列的表結構:MSSQL如何選擇多行到列?

日期,消息類型,MessageText中

行數據如下:

2017-06-22 | "Public" | "Test Message" 
2017-06-22 | "Private" | "Test Message 2" 
2017-06-22 | "Semi Private" | "Test Message 3" 

我希望能輸出成以下結構:

DATE | "Public" | "Private" | "Semi Private" 
2017-06-22 | "Test Message" | "Test Message 2" | "Test Message 3" 

所以我可以按日期分組,並且讓不同的MessageType成爲列標題,機智h每日期的MessageText。

假設每個日期只有一種類型的MessageType。

我正在使用MS SQL。

非常感謝提前!

回答

2

Date可能是您正在尋找的一個簡單的數據透視查詢。我說「可能」,因爲我的答案假設每個日期只有三種消息類型中的最多一種。

SELECT 
    Date, 
    MAX(CASE WHEN MessageType = 'Public' THEN MessageText END) AS [Public], 
    MAX(CASE WHEN MessageType = 'Private' THEN MessageText END) AS [Private], 
    MAX(CASE WHEN MessageType = 'Semi Private' 
      THEN MessageText END) AS [Semi Private] 
FROM yourTable 
GROUP BY Date 

再次,如果這不適合你,那麼編輯你的問題,並顯示數據失敗的地方。

+0

那我不知道MessageType是什麼的情況呢?是否有更通用的查詢可以編寫,以便它自動生成基於不同MessageType的列? – TheBear

+0

是的,你可以使用動態SQL。這將是更多的工作,也會使我的答案無效(我只回答,因爲它似乎你不會需要動態SQL)。 –