【发布时间】:2021-10-10 19:20:33
【问题描述】:
我有两个 SQL Server 表:
TableA TableB
+------+--------+ +-----+------------+
| aid | Name | | aid | Activity |
+------+--------+ +-----+------------+
| 1 | Jim | | 1 | Skiing |
| 2 | Jon | | 1 | Surfing |
| 3 | Stu | | 1 | Riding |
| 4 | Sam | | 3 | Biking |
| 5 | Kat | | 3 | Flying |
+------+--------+ +-----+------------+
我正在尝试以下结果,其中相关活动位于逗号分隔列表中:
+------+--------+------------------------------+
| aid | Name | Activity |
+------+--------+------------------------------+
| 1 | Jim | Skiing, Surfing, Riding |
| 2 | Jon | NULL |
| 3 | Stu | Biking, Flying |
| 4 | Sam | NULL |
| 5 | Kat | NULL |
+------+--------+------------------------------+
我试过了:
SELECT aid, Name, STRING_AGG([Activity], ',') AS Activity
FROM TableA
INNER JOIN TableB
ON TableA.aid = TableB.aid
GROUP BY aid, Name
有人可以帮我处理这个 SQL 查询吗?谢谢。
【问题讨论】:
-
您使用的是什么关系型数据库?你有表结构吗?你试过什么?
-
我在 Microsoft SQL Server Management Studio v18.8 中。我读到了一个名为 STRING_AGG 的东西,但不知道如何应用它。
-
我也查看了 XML PATH,但找不到与我正在做的足够相似的示例。
-
当您尝试该代码时发生了什么,为什么它不起作用?
标签: sql sql-server tsql join relational-database