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

把多个列值合成一个
航线     停靠港口   顺序号
1           AA                 1
1           BB                 2
1           CC                 3
2           BB                 1
2           CC                 2

现在一个表有其中三个字段。一条航线对应有多个港口。其中顺序号是把它依次停靠的顺序。
现在我想得到一个航线它按顺序对就所停靠的港口
如:

航线       停靠港口
1           AA-BB-CC
2           BB-CC

------解决方案--------------------
--創建函數
Create Function F_TEST(@航线 Int)
Returns Nvarchar(1000)
As
Begin
Declare @S Nvarchar(1000)
Select @S = ' '
Select @S = @S + '- ' + 停靠港口 From TEST Where 航线 = @航线 Order By 顺序号
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
--測試
Select
航线,
dbo. F_TEST(航线) As 停靠港口
From
TEST
Group By
航线
------解决方案--------------------


create function f(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str= ' '
select @str=@str+ '- '+停靠港口 from 表名 where 航线 = @id
set @str=stuff(@str,1,1, ' ')
return @str
end

select 航线,dbo.f(航线) from 表名 group by 航线