当前位置: 代码迷 >> Sql Server >> SQL大师来,问个查询语句,该怎么解决
  详细解决方案

SQL大师来,问个查询语句,该怎么解决

热度:70   发布时间:2016-04-27 12:23:37.0
SQL大师来,问个查询语句
表结构和内容如下
Name--Age--NO--Remark
A--11--11--ABC
A--11--11--CCC
A--11--11--AAA
B--11--11--CCC
B--11--11--DDD
=======================================================
查询后的结果为
Name--Age--NO--Remark
A--11--11--ABC,CCC,CCC
B--11--11--CCC,DDD

就是前面三列数据重复的合并,后面一列不同的串起来。
重复的可能是2行,3行,或是更多行,求解。
补充一句,最后一列Remark会有NULL值,和前面是同样的处理方式,前三列合并,后面的就不用串起来了,还是写NUll

------解决方案--------------------
SQL code
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([Name] varchar(1),[Age] int,[NO] int,[Remark] varchar(3))insert [tb]select 'A',11,11,'ABC' union allselect 'A',11,11,'CCC' union allselect 'A',11,11,'AAA' union allselect 'B',11,11,'CCC' union allselect 'B',11,11,'DDD' union allselect 'A',11,11,NULLgoselect name,age,no,  remark=stuff((select ','+remark from tb where remark is not null and name=t.name and age=t.age and no=t.no for xml path('')),1,1,'')from tb twhere remark is not nullgroup by name,age,noUNION ALLSELECT * FROM TB WHERE REMARK IS NULL/**name age         no          remark---- ----------- ----------- -----------------------A    11          11          ABC,CCC,AAAB    11          11          CCC,DDDA    11          11          NULL(3 行受影响)**/
  相关解决方案