请问MS SQL怎样将多行记录合并为一行?

比如说,
将下面的查询结果:
cInvCode cBatch cPosCode
M1005353 080625021 E5000168
M1005353 080625021 E5000171
M1002192 100111003 E5000121
M1002192 100111003 E5000131
M1002192 100111003 E5000141
M1001899 100113012 E5000131
M1001899 100113012 E5000169
转换成以下结构:
cInvCode cBatch cPosCode
M1005353 080625021 E5000168,E5000171
M1002192 100111003 E5000121,E5000131,E5000141
M1001899 100113012 E5000131,E5000169

第1个回答  2013-05-24
oracle11里面有一个函数可以合并字符串的。
MS的应该没有。

通用的办法是使用游标,select按照clnvCode排序,然后记录本条记录的clnvCode,并记录cPosCode值,检查下一个的时候,用上一条记录的clnvCode对比本条的clnvCode,如果相等,就把cPosCode内容与上次记录的cPosCode相加。
第2个回答  2013-05-24
请参考这个函数:http://www.jb51.net/article/18772.htm,方法就是在数据库里自建一个这样的函数,然后就可以用了,你可以对它的函数做小小修改:
1 select @Str = @Str + [cPosCode]+',' from Table where xxxx
2 Create FUNCTION AggregateString
(
@ccode varchar(20) , @catch varchar(20)
)
3select @Str = @Str + [cPosCode]+',' from Table where where [cinvCode] = @ccode and [cBatch] =@catch本回答被提问者采纳
第3个回答  2013-05-24
select cInvCode,cBatch,
group_concat(cPosCode) from 表 group by cInvCode,cBatch
试试,看行不追问

这个貌似是MYSQL里的函数吧,MS SQL 08不识别

追答

。。我看成你要mysql的了,,

第4个回答  2013-05-24
估计不可以。

请问MS SQL怎样将多行记录合并为一行?
oracle11里面有一个函数可以合并字符串的。MS的应该没有。通用的办法是使用游标,select按照clnvCode排序,然后记录本条记录的clnvCode,并记录cPosCode值,检查下一个的时候,用上一条记录的clnvCode对比本条的clnvCode,如果相等,就把cPosCode内容与上次记录的cPosCode相加。

如何在MS SQL 数据库中将几列合并成一行
F列 varchar(100))insert into @tt values (1, 1, 1, '耐酸汗渍色牢度(面料)','色泽变化', NULL)insert into @tt values (1, 2, 1, '耐酸汗渍色牢度(面料)','涤布沾色', NULL)insert into @tt values (2,

SQL 将属于同一个ID下的多行数据合并到一行
mssql下create Table #myfal (ID int,data1 varchar(20),data2 varchar(20))insert into #myfal values (1,1,'')insert into #myfal values (1,1.1,'')insert into #myfal values (1,'',0.3)insert into #myfal values (2,1,'')insert into #myfal values (2,'',1.2)selec...

请教MSSQL里边怎样能把批量的结果写入到同一个单元格里边?
set 备注 = 单元名称 +'房' + ' \/ ' + substring(住户编号,3,PATINDEX(住户编号,'4')+3) ---具体第几位要自己模拟试试 where 住户编号<>''这个才是对的,望采纳!!!

sql如何按条件把相同记录合并成一条记录?
楼主要实现的是金额动态列吧! 动态列的实现一般可以用两部来实现,第一步拼接group 出SQL,第二步拼接sql,比如楼主的需求可以这样来实现 1: select 'sum (case when 金额 = '' '金额' '' then 金额 else 0 end) ' from 数据表 group by 金额 2: 将上面的结果字符 用...

请教mssql中,把父编号一样的数据都写入到同一单元格中
)--用outer apply和for xml path做行合并。仅适用于SQL Server 2005及以上版本select stuff(b.房屋编号,1,1,'') 房屋编号,a.父编号 from (select distinct 父编号 from tmp) aouter apply (select '\\'+房屋编号 from tmp where 父编号=a.父编号 for xml path('')) b(房屋编号)结果:...

MSSQL多条字段相同的数据合并。
');mysql_query("SET NAMES 'gb2312'");\/\/设置文档与数据库教程编码一致就OK,否则会出乱码\/* 先我们创建数据表a111cnnet 与b111cnnet,c111cnnet 表,现在我要把b111cnnet,c111cnnet导入到a111cnnet表中,并且如果二张表有相同记录只保存一条。 三个表的结构是一样的如下 id mediumint(8)...

关于SQL查询如何合并两行表为一行
oracle: select 行序号,listagg(名称,chr(10)) within group by (order by 1) as 名称 from 表 group by 行序号

怎么将MSSQL两条查询语句(条件不同)的结果组合在一起呢?
select a1,a2,b1,b2 from (SELECT A1,A2 FROM A WHERE A.ID=1) t1,(SELECT B1,B2 FROM B WHERE B.ID=2) t2

SQL中合并多条记录中某一个字段
创建表 create table tdm01(da01 varchar(10))insert into tdm01 values ('001')insert into tdm01 values ('002')insert into tdm01 values ('003')insert into tdm01 values ('004')insert into tdm01 values ('005')执行 select distinct da01=stuff((select ''+da01 from tdm01 t ...

相似回答