sql - 如何在 SQL Server 中连接字符串,并按不同的列排序/排序?
问题描述
我在 SQL Server 中看到了许多连接字符串的示例,但如果他们担心排序,则总是通过连接的列。我需要根据不同字段中的数据对值进行排序。
样品表:
ClassID | StudentName | SortOrder
-----------------------------
A |James |1
A |Janice |3
A |Leonard |2
B |Luke |2
B |Leia |1
B |Artoo |3
我想得到的结果是:
ClassID |StudentName
--------------------------------
A |James, Leonard, Janice
B |Leia, Luke, Artoo
这如何在 SQL Server 2016 中完成?(我很期待 2017 年的 STRING_AGG,但我们还没有……)
谢谢!
解决方案
干得好:
SELECT
s1.ClassID
, STUFF((SELECT
',' + s2.StudentName
FROM dbo.Student AS s2
WHERE s1.classID = s2.ClassID
ORDER BY s2.SortOrder
FOR XML PATH('')), 1, 1, '') AS StudentNames
FROM dbo.Student AS s1
GROUP BY s1.ClassID
推荐阅读
- c - 对标准输出的混合写入和对 WriteConsole 的调用是否总是以相同的顺序打印到控制台?
- amazon-web-services - 终止长时间不使用的正在运行的 EC2 实例
- python - 'module' 对象在 Python 中不可使用包调用
- python - MATLAB VS Python 索引,IndexError:索引 9654 超出轴 0 的范围,大小为 9654?
- r - 如何以图形方式测量变量之间的关系?
- uwp - UWP 加载指示符不出现
- html - 如何将多个延迟加载占位符传递给图片元素?
- firebase - 如何组合两个 Redux Firebase Cloud Firestore 查询?
- haskell - 在我的关系数据类型中实例化 Eq 时遇到问题
- python - 有没有办法在 Python 中使用循环自动执行用户函数?