sql - 如何在sql中连接具有相同id的多行?

标签 sql sql-server

我的表包含两个字段等详细信息:

ID      DisplayName
1        Editor
1        Reviewer
7        EIC
7        Editor
7        Reviewer
7        Editor
19       EIC
19       Editor
19       Reviewer

我想通过 DisplayName 获取独特的详细信息,例如

1 编辑、审稿人 7 EIC、编辑、审稿人

不要获取 ID 为 7 的重复值

如何组合 DisplayName 详细信息?如何编写查询?

最佳答案

SQL-Server中,您可以通过以下方式执行此操作:

查询

SELECT id, displayname = 
    STUFF((SELECT DISTINCT ', ' + displayname
           FROM #t b 
           WHERE b.id = a.id 
          FOR XML PATH('')), 1, 2, '')
FROM #t a
GROUP BY id

测试数据

create table #t 
(
id int,
displayname nvarchar(max)
)

insert into #t values    
 (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

关于sql - 如何在sql中连接具有相同id的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172956/

相关文章:

mysql - 以下 SQL 查询是否调用整个表扫描?

sql - 如何找出语法错误?

sql server : Estimated number of rows is way off

sql - Heroku Postgres 数据库的只读权限

javascript - 在javascript中替换来自sql server的回车符和换行符

sql-server - SQL Server 中是否有设置将 null = null 评估为 true?

sql-server - SQL异常中的 "[Pre-Login] initialisation=xyz"是什么意思?

sql server select查询一列相同而另一列不同

sql - 如何编写 "streak"查询?

sql - Azure blob 到 Azure SQL 数据库 : Cannot bulk load because the file "xxxx.csv" could not be opened. 操作系统错误代码 5(访问被拒绝。)