我有这样的问题。我的数据就像:
数字(Id) 字母(编号,编号编号)
如果我执行Join查询,则会得到如下输出:
SELECT N.Id, L.Id
FROM Numbers N
JOIN Letters L ON N.Id = L.NumberId
输出为
1 | a
1 | b
2 | a
2 | b
2 | c
但是我想在一列中包含所有字母,例如
SELECT N.Id, Letters.Value
FROM Numbers N
CROSS APPLY (SELECT
(SELECT ',' + L.Id
FROM Letters L
WHERE L.NumberId = N.Id
FOR XML PATH(''))) AS Letters(Value)
期望的结果是
1 | ,a,b
2 | ,a,b,c
有没有办法使第二个输出成为索引视图的结果? 我尝试使用CROSS APPLY和子查询,GROUP BY和DISTINCT。也许我可以将此查询拆分为更简单的查询?有什么建议吗?