将多个行值组合为一个按两列值分组的行

时间:2014-08-28 20:21:22

标签: sql sql-server-2008

我正在尝试根据两个值组合同一个表中的多个列。 (行和消息类型)

我有多行,包含重复的行号,消息,消息类型和说明。

我需要的是每个行号一个唯一的行。如果一行有多个相同类型的消息,我希望能够将该行的所有消息(按类型)合并为一个值。

我拥有的:

+--------+---------+--------------+-------------------+ | Line | Message | Message Type | Description | +--------+---------+--------------+-------------------+ | 1 | B1 | 6 | Duplicate | | 1 | B3 | 6 | Over | | 1 | A1 | 1 | NULL | | 2 | B2 | 6 | Separate | | 2 | A1 | 1 | NULL | | 2 | A2 | 1 | NULL | +--------+---------+--------------+-------------------+

我想要完成的事情

+-------+--------+--------+------------------------------+ | Line | Type 1 | Type 6 | Description | +-------+--------+--------+------------------------------+ | 1 | A1 | B1,B3 | Duplicate, Over | | 2 | A2,A2 | B2 | Separate | +-------+--------+--------+------------------------------+

我正在使用Sql Server 2008.目前,如果每种类型只有一个值,则每个行号会得到一行。例如,上面的第1行返回3行,与所有值的一行相对。

在上面的示例中,值的数量最少,但我正在使用的表不限于这些值。 (例如,类型6可能有50个可能值列表中的3个不同的值。)

1 个答案:

答案 0 :(得分:0)

我不相信Sql Server 2008有一个用于创建逗号分隔列表的聚合方法。您必须通过制作自定义聚合方法来制作自己的方法。看看以下内容:

http://msdn.microsoft.com/en-us/library/ms182741(v=sql.100).aspx