我使用的是here找到的解决方案,但我需要忽略FOR XML PATH
中的排序。
示例数据是:
ID DisplayName
1 Editor
1 Reviewer
7 EIC
7 Editor
7 Reviewer
7 Editor
19 EIC
19 Editor
19 Reviewer
解决方案的结果是:
ID DisplayName
1 Editor, Reviewer
7 Editor, EIC, Reviewer
19 Editor, EIC, Reviewer
我需要找到一种方法来阻止FOR XML PATH
排列字符串并按照确切的顺序返回结果:
ID DisplayName
1 Editor, Reviewer
7 EIC, Editor, Reviewer, Editor
19 EIC, Editor, Reviewer
更新:
我的表格如下:
ID DisplayName Sequence
1 Editor 1
1 Reviewer 2
7 EIC 1
7 Editor 2
7 Reviewer 3
7 Editor 4
19 EIC 1
19 Editor 2
19 Reviewer 3
所以我希望它根据每个ID的顺序组合字符串。
答案 0 :(得分:2)
评论太长了。
SQL表代表无序集。除非列指定排序,否则行中没有排序。因此,你不能让结果与原始行“按照相同的顺序”,因为这个概念毫无意义。
如果您有订购栏,可以使用:
SELECT id,
STUFF( (SELECT ', ' + DisplayName
FROM #t b
WHERE b.ID = a.ID
ORDER BY b.Sequence
FOR XML PATH('')
), 1, 2, ''
) as displaynames
FROM (SELECT DISTINCT ID FROM #t) a;
此处Sequence
是指定更新后问题的排序的列。