我有一个包含以下3列的表结构:
Date,MessageType,MessageText
Row数据如下所示:
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成为列标题,每个日期都包含MessageText。
假设每个Date只有一种MessageType。
我正在使用MS SQL。
非常感谢提前!
答案 0 :(得分: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
同样,如果这对您不起作用,请编辑您的问题并显示失败的数据。