我有以下sql:
select distinct a1.Id, a1.Value from
#table1 a1
where a1.Id in
(select a2.Id from #table1 a2
join #table1 a3 on a2.Id = a3.Id
where a2.Value <> a3.Value)
它将来自同一个表的相同ID分组,以防它们各自的值不同。示例输出:
| Id |Value|
| 1 | 1 |
| 1 | 3 |
| 1 | 2 |
| 2 | 4 |
| 2 | 5 |
我想将这些行连接成一个,所以它看起来像这样:
| Id | Value |
| 1 | 1,3,2 |
| 2 | 4,5 |
我尝试使用xml路径,但我无法弄清楚如何正确执行:
select a1.Id,
SUBSTRING(
(
SELECT ',' + CAST(a1.Value as varchar(50)) [text()]
where a1.Id in
(select a2.Id from #table1 a2
join #table1 a3 on a2.Id= a3.Id
where a2.Value<> a3.Value
)
FOR XML PATH ('')
), 2, 1000) [Value]
FROM #table a1
但它不起作用。我正在使用Microsoft SQL。 我在子查询中遇到了转换问题&#39;进入有效的sql,我可以使用&#39; FOR XML PATH(&#39;&#39;)&#39;。我尝试过使用交叉申请,但我无法弄清楚如何正确加入同一桌子的3倍