SQLserver 根据条件将多行合并为一行
Posted 格子衫111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLserver 根据条件将多行合并为一行相关的知识,希望对你有一定的参考价值。
将表和插入模拟数据
CREATE TABLE #TEST(
ID INT,
course VARCHAR(255)
)
INSERT INTO #TEST VALUES(1,'语文')
INSERT INTO #TEST VALUES(2,'数学')
INSERT INTO #TEST VALUES(3,'英语')
INSERT INTO #TEST VALUES(4,'英语')
INSERT INTO #TEST VALUES(4,'英语')
INSERT INTO #TEST VALUES(4,'英语1')
将course合并为一行
SELECT STUFF((
SELECT ',' + course FROM #TEST FOR XML PATH('')
),1,1,'') AS 科目
将course合并为一行后,给对应ID,并去掉重复
select ID, name = (stuff((select ',' + course from (SELECT distinct course,ID FROM #TEST) BB where ID =
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函数
以上是关于SQLserver 根据条件将多行合并为一行的主要内容,如果未能解决你的问题,请参考以下文章