我正在尝试根据两个值组合同一个表中的多个列。 (行和消息类型)
我有多行,包含重复的行号,消息,消息类型和说明。
我需要的是每个行号一个唯一的行。如果一行有多个相同类型的消息,我希望能够将该行的所有消息(按类型)合并为一个值。
+--------+---------+--------------+-------------------+
| 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个不同的值。)
答案 0 :(得分:0)
我不相信Sql Server 2008有一个用于创建逗号分隔列表的聚合方法。您必须通过制作自定义聚合方法来制作自己的方法。看看以下内容:
http://msdn.microsoft.com/en-us/library/ms182741(v=sql.100).aspx