求问把多行数据里的一个字段值合并到一个单元格里
还是看下面描述比较清楚
表信息:
               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