读书人

请问怎么把一个表中的多行数据整合成一

发布时间: 2013-09-16 13:45:21 作者: rapoo

请教如何把一个表中的多行数据整合成一行
查询语句如下:
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 楼盘编号,楼阁编号,单元编号,住户编号,当前住户编号 就行了,其他需要的信息用表连接查询出来就行了

读书人网 >SQL Server

热点推荐