日期:2014-05-17  浏览次数:20722 次

请教如何把一个表中的多行数据整合成一行
查询语句如下:
select 楼盘编号,楼盘名称,楼阁编号,楼阁名称,楼层名称,单元编号,单元名称,住户编号,
住户名称,银行帐号,梯数,单元状态,当前住户编号,联系地址,邮政编码,联系电话,'海景分摊合计',顺序,
MAX(计费日期) as 计费日期,MIN(计费起始日期) as 计费起始日期,MAX(计费终止日期) as 计费终止日期,
max(收款终止日期) as 收款终止日期,单价,SUM(应计金额) as 应计金额,SUM(实收金额) as 实收金额,前期预收,
上次行度,本次行度,行度,汇率,币种,备注,未收款,计费年月,
倍率,'海景分摊合计',单元通知单编号,建筑面积 from tmp_单元交费通知单 where 费项名称 
in('分摊电费','电梯分摊','水泵电费','梯灯电费')
group by 楼盘编号,楼盘名称,楼阁编号,楼阁名称,楼层名称,单元编号,单元名称,住户编号,
住户名称,银行帐号,梯数,单元状态,当前住户编号,联系地址,邮政编码,联系电话,收费项目,顺序,计费日期,计费起始日期,
计费终止日期,收款终止日期,单价,应计金额,实收金额,前期预收,上次行度,本次行度,行度,汇率,币种,备注,未收款,计费年月,
倍率,费项名称,单元通知单编号,建筑面积

但是输出了十几行的数据,现在想要把十几行的数据整合成一行输出,请问如何实现?谢谢。

------解决方案--------------------
参考这样的例子:

create table tb(name varchar(10),id int,context varchar(100))
Insert into tb 
select 'A','1','內容1'
union all select 'A','2','內容2'
union all select 'A','3','內容3'
union all select 'A','4','內容4'
union all select 'B','1','B的內容1'
union all select 'B','2','B的內容2'
union all select 'B','3','B的內容3'
union all select 'B','4','B的內容4'

select * from tb


declare @s varchar(4000)
set @s=''
select @s=@s+'['+name+','+cast(id as varchar)+','+context+']; '
from tb
print @s

--结果
/*
[A,1,內容1]; [A,2,內容2]; [A,3,內容3]; [A,4,內容4]; [B,1,B的內容1]; [B,2,B的內容2]; [B,3,B的內容3]; [B,4,B的內容4]; 

*/

------解决方案--------------------
group by 楼盘编号,楼盘名称,楼阁编号,楼阁名称,楼层名称,单元编号,单元名称,住户编号,
 住户名称,银行帐号,梯数,单元状态,当前住户编号,联系地址,邮政编码,联系电话,收费项目,顺序,计费日期,计费起始日期,
 计费终止日期,收款终止日期,单价,应计金额,实收金额,前期预收,上次行度,本次行度,行度,汇率,币种,备注,未收款,计费年月,
 倍率,费项名称,单元通知单编号,建筑面积
 你的分组条件太多了,以至于输出重复,只要 group by 楼盘编号,楼阁编号,单元编号,住户编号,当前住户编号 就行了,其他需要的信息用表连接查询出来就行了