日期:2014-05-19  浏览次数:20473 次

如何在一个表里,根据某个字段的值合并多行数据??
先在有一个公司表

公司名称     公司地址   公司电话
  A                   地址A           空
  A                   空               64864456543
怎样查询才能得到
公司名称     公司地址     公司电话
A                 地址A               64864456543



------解决方案--------------------
如果只是要消除空值的話可以這樣

select 公司名称, max(公司地址), max(公司电话)
from 公司表
group by 公司名称
------解决方案--------------------
對了,你字段中的 "空 "是指null還是字符 '空 '?
------解决方案--------------------
create function fn_addr(@compId varchar(10))
returns varchar(100)
as
begin
declare @addr varchar(100)
set @addr = ' '
select @addr = @addr + 公司地址 from 公司表 where 公司名称 = @compId
return @addr
end
create function fn_tel(@compId varchar(10))
returns varchar(100)
as
begin
declare @tel varchar(100)
set @atel = ' '
select @tel = @tel + 公司電話 from 公司表 where 公司名称 = @compId
return @tel
end
go

select 公司名称,公司地址 = dbo.fn_addr(公司名称),公司電話= dbo,fn_tel(公司名称) from 公司表