资源描述:
《sql中合并多行相似的数据为一行》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Sql中合并多行相似的数据为一行ControllerNoVideoNo11213141122232422343查询结果为:ControllerNoListVideoNo1,2,3,411,2,3,420,2,0,43Sqlserver语句如下:--1.先行变列selectVideoNo,ControllerNo1=max(caseControllerNowhen1thenControllerNoelse0end),ControllerNo2=max(caseControllerNowhen2thenControllerNoelse0end),Contro
2、llerNo3=max(caseControllerNowhen3thenControllerNoelse0end),ControllerNo4=max(caseControllerNowhen4thenControllerNoelse0end)fromtbgroupbyVideoNo执行结果:VideoNoControllerNo1ControllerNo2ControllerNo3ControllerNo4---------------------------------------------------------------1123421234
3、30204(所影响的行数为3行)--2.对上图所产生的表t进行“合并多列为一列”操作selectcast(ControllerNo1asvarchar)+','+cast(ControllerNo2asvarchar)+','+cast(ControllerNo3asvarchar)+','+cast(ControllerNo4asvarchar)asControlerNoList,VideoNofromt★全部sql语句如下★createtabletb(ControllerNointnotnull,VideoNointnotnull)insertint
4、otb(ControllerNo,VideoNo)values(1,1)insertintotb(ControllerNo,VideoNo)values(2,1)insertintotb(ControllerNo,VideoNo)values(3,1)insertintotb(ControllerNo,VideoNo)values(4,1)insertintotb(ControllerNo,VideoNo)values(1,2)insertintotb(ControllerNo,VideoNo)values(2,2)insertintotb(Contro
5、llerNo,VideoNo)values(3,2)insertintotb(ControllerNo,VideoNo)values(4,2)insertintotb(ControllerNo,VideoNo)values(2,3)insertintotb(ControllerNo,VideoNo)values(4,3)select*fromtbselectcast(ControllerNo1asvarchar)+','+cast(ControllerNo2asvarchar)+','+cast(ControllerNo3asvarchar)+','+c
6、ast(ControllerNo4asvarchar)asControlerNoList,VideoNofrom(selectVideoNo,ControllerNo1=max(caseControllerNowhen1thenControllerNoelse0end),ControllerNo2=max(caseControllerNowhen2thenControllerNoelse0end),ControllerNo3=max(caseControllerNowhen3thenControllerNoelse0end),ControllerNo4=
7、max(caseControllerNowhen4thenControllerNoelse0end)fromtbgroupbyVideoNo)t执行结果为:★可将sql语句更新为:select(caseControllerNo1when0then''elsecast(ControllerNo1asvarchar)+','end)+(caseControllerNo2when0then''elsecast(ControllerNo2asvarchar)+','end)+(caseControllerNo3when0then''elsecast(Contro
8、llerNo3asvarchar)+','end)+(caseControlle