求问把多行数据里的一个字段值合并到一个单元格里
还是看下面描述比较清楚
表信息:
tb --表名
id score --列名
1 24 --列值
1 56 --列值
如何把它变成
tb --表名
id score --列名
1 24,56 --列值
意思就是取出id相同的多行数据,把其中score的值合并到一条记录里该id的score的值。
------解决方案--------------------CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a',1
UNION ALL SELECT 'a',2
UNION ALL SELECT 'b',1
UNION ALL SELECT 'b',2
UNION ALL SELECT 'b',3
UNION ALL SELECT 'c',3
--合并处理
SELECT col1,
col2=CAST(MIN(col2) as varchar)
+CASE
WHEN COUNT(*)=3 THEN ','
+CAST((SELECT col2 FROM tb WHERE col1=a.col1 AND col2 NOT IN(MAX(a.col2),MIN(a.col2))) as varchar)
ELSE ''
END
+CASE
WHEN COUNT(*)>=2 THEN ','+CAST(MAX(col2) as varchar)
ELSE ''
END
FROM tb a
GROUP BY col1