SQLserver 根据条件将多行合并为一行

超、凢脫俗 2024-03-30 12:46 137阅读 0赞

将表和插入模拟数据

  1. CREATE TABLE #TEST(
  2. ID INT,
  3. course VARCHAR(255)
  4. )
  5. INSERT INTO #TEST VALUES(1,'语文')
  6. INSERT INTO #TEST VALUES(2,'数学')
  7. INSERT INTO #TEST VALUES(3,'英语')
  8. INSERT INTO #TEST VALUES(4,'英语')
  9. INSERT INTO #TEST VALUES(4,'英语')
  10. INSERT INTO #TEST VALUES(4,'英语1')

将course合并为一行

  1. SELECT STUFF((
  2. SELECT ',' + course FROM #TEST FOR XML PATH('')
  3. ),1,1,'') AS 科目

在这里插入图片描述
将course合并为一行后,给对应ID,并去掉重复

  1. select ID, name = (stuff((select ',' + course from (SELECT distinct course,ID FROM #TEST) BB where ID =
  2. a.ID for xml path('')),1,1,'')) from #TEST a group by ID

在这里插入图片描述
sql:

select ID,
name = (
stuff(
(select ‘,’ + course from #TEST where ID = a.ID for xml path(‘’)),
1,
1,
‘’
)
) from #TEST a group by ID

关于stuff函数的应用以及 for xml path的应用可参见这两篇文章:
FOR XML PATH
stuff函数

发表评论

表情:
评论列表 (有 0 条评论,137人围观)

还没有评论,来说两句吧...

相关阅读