如何将相似结果的行合并为一个?

时间:2019-06-13 14:22:12

标签: sql-server

如何将相似结果的行合并为一个?例如,这就是我所拥有的:

Title | Actor | StartYear | Genres
Noah | Adam   | 2000 | Documentary
Noah | Eve    | 2000 | Documentary
Noah | Joshua | 2000 | Documentary
Narnia | Peter | 2005 | Action
Narnia | James | 2005 | Action

我想要的是:

Title | Actor | StartYear | Genres
Noah | Adam, Eve, Joshua  | 2000 | Documentary
Narnia | Peter, James | 2005 | Action

此链接中提供的方法STRING_AGG不起作用,因为我有10列。 (或者我错了吗?如果我使用了STRING_AGG,因为其他列不在group by子句中,所以我无法执行查询) Comma separated results in SQL

例如,这可行,

 SELECT primaryTitle, STRING_AGG(Actor, ', ') FROM table GROUP BY primaryTitle

这不是

SELECT primaryTitle, STRING_AGG(Actor, ', '), StartYear, Genre FROM table GROUP BY primaryTitle

1 个答案:

答案 0 :(得分:2)

您只需要确保您要对未应用聚合函数的所有列进行分组即可。即

SELECT primaryTitle, STRING_AGG(Actor, ', '), StartYear, Genre 
FROM table 
GROUP BY primaryTitle, StartYear, Genre