【发布时间】:2015-08-03 19:09:34
【问题描述】:
我正在尝试编写一个使用 ID 选择一堆相关行的 SQL 查询。但是,我不想将每个关联项目都放在一行中,而是将它们连接成一行。
例如而不是:
ID Item
1 a
2 b
1 c
我想要:
ID Item 1 Item 2 ...
1 a c
2 b
目前我正在使用一个简单的查询,但不知道如何做到这一点:
Select
Investigation.ID,
Record.Item
FROM
Investigation
INNER JOIN
Record
ON Investigation.ID = Record.Inv_Id
这个查询是一个更大的查询的一部分,它涉及多个连接和一个联合。最终,这将全部转换为 XML,格式可能类似于以下内容:
<investigation>
<id>1</id>
<name>something</name>
<items>
<item>a</item>
<item>c</item>
</items>
<investigation>
<investigation>
<id>2</id>
<name>something else</name>
<items>
<item>b</item>
</items>
</investigation>
【问题讨论】:
-
我不完全确定,但这看起来像是一个支点。
-
请看下面的问题。它使用 PIVOT 并将获得您需要的结果。如果您的值并不总是已知,还解释了如何创建动态数据透视语句。 stackoverflow.com/questions/11617713/…
-
我会稍微担心一下性能,因为它必须是一个包含在已经很复杂的 sql 查询中的动态枢轴。谢谢你:)
-
如果它以逗号分隔返回项目,对您有用吗?如果你有动态数量的“项目”,那么“STUFF”和“coalesce”可以为你工作......让我知道这是否有效,以便我给你解决方案
-
不幸的是,XML 是从查询中生成的,所以它只会使它们全部成为一个 XML 字段。不过谢谢。
标签: sql-server