读书人

把多个列值合成一个解决思路

发布时间: 2012-04-02 19:58:59 作者: rapoo

把多个列值合成一个
航线 停靠港口 顺序号
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 航线

读书人网 >SQL Server

热点推荐