2024年2月10日发(作者:)

SELECT * FROM #t

/*--更新处理后的临时表

col1 col2

---------- -------------

a 1

a 1,2

b 1

b 1,2

b 1,2,3

--*/

--得到最终结果

SELECT col1,col2=MAX(col2)FROM #t GROUP BY col1

/*--结果

col1 col2

---------- -----------

a 1,2

b 1,2,3

--*/

--删除测试

DROP TABLE tb,#t

GO

/*==============================================*/

--===============================================================

--3.3.4.1 每组 <=2 条记录的合并

--处理的数据

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 'c',3

--合并处理

SELECT col1,

col2=CAST(MIN(col2)as varchar)

+CASE

WHEN COUNT(*)=1 THEN ''

ELSE ','+CAST(MAX(col2)as varchar)

END

FROM tb

GROUP BY col1

DROP TABLE tb

/*--结果

col1 col2

---------- ----------

a 1,2

b 1,2

c 3

--*/

--3.3.4.2 每组 <=3 条记录的合并

--处理的数据

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

--QQ291911320

--合并处理

SELECT col1,

col2=CAST(MIN(col2)as varchar)

+CASE

WHEN COUNT(*)=3 THEN ','

+CAST((SELECT col2 FROM tb WHERE col1=1 AND col2 NOT IN(MAX(2),MIN(2)))as varchar)

ELSE ''

END

+CASE

WHEN COUNT(*)>=2 THEN ','+CAST(MAX(col2)as varchar)

ELSE ''

END

FROM tb a

GROUP BY col1

DROP TABLE tb

/*--结果

col1 col2