首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-06-14 
SQL大师来,问个查询语句表结构和内容如下Name--Age--NO--RemarkA--11--11--ABCA--11--11--CCCA--11--11--A

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 行受影响)**/ 

热点排行