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

一个查询语句优化问题。
似如题所说,前期通过多个表联合查询得到结果,但是结果中有重复的数据,例如

ID       NAME         C_ID
1           A             1.0
2           B             1.1  
3           C             1.2
4           D             1.2

但是我想要得到的结果为
  ID       NAME     C_ID
    1         A         1.0
    2         B         1.1
    3         C+D     1.2
这个C_ID   还有很多种重复数据在里我就不一一写出了。
请各位大侠帮助解决一下

------解决方案--------------------
create function dbo.fn_Merge(@C_ID decimal(5,1))
returns varchar(8000)
as
begin
declare @name varchar(8000)
set @name= ' '
select @name=@name+ '+ '+NAME from test where C_ID=@C_ID
return stuff(@name,1,1, ' ')
end
go

create table test(ID int,NAME varchar(10),C_ID decimal(5,1))
insert test select 1, 'A ',1.0
union all select 2, 'B ',1.1
union all select 3, 'C ',1.2
union all select 4, 'D ',1.2

select ID=min(ID),NAME,C_ID from
(
select ID,NAME=dbo.fn_Merge(C_ID),C_ID from test
)a
group by NAME,C_ID
------解决方案--------------------
create function dbo.fn_Merge(@C_ID decimal(5,1))

改为:

create function dbo.fn_Merge(@C_ID varchar(20))