这样的sql语句如何写?
在网上看到一个有关公交线路查询的例子,表结构如下:
ID Stataion Orders
1路 鼓楼 1
1路 新街口 2
1路 汽车站 3
1路 火车站 4
2路 新街口 1
2路 飞机场 2
2路 天安门 3
3路 天安门 1
3路 石门坎 2
3路 驾校 3
ID为路线名称,Station为站点名称,Orders为行车方向(通过它反应每个站的上一个、下一个站)
现在需要二个查询
1、按路线名称查询,查询完后按先后顺序列出这条线路的站点名称
2、按站点名称查询,查询完后把所经过该站点的线路都列出来
[解决办法]
create table test(ID varchar(20),Stataion varchar(20),Orders int )
insert into test
select '1路 ', '鼓楼 ', 1
union all select '1路 ', '新街口 ', 2
union all select '1路 ', '汽车站 ', 3
union all select '1路 ', '火车站 ', 4
union all select '2路 ', '新街口 ', 1
union all select '2路 ', '飞机场 ', 2
union all select '2路 ', '天安门 ', 3
union all select '3路 ', '天安门 ', 1
union all select '3路 ', '石门坎 ', 2
union all select '3路 ', '驾校 ', 3
select * from test
go
create function f_num(@id varchar(200))
returns varchar(200)
as
begin
declare @e varchar(8000)
--set @id= '1路 '
set @e= ' '
select @e=@e+ '-> '+Stataion from test where ID=@id order by Orders
set @e=stuff(@e,1,2, ' ')
return (@e)
end
go
select distinct id,dbo.f_num(id) as Stataion from test
/*
id Stataion Orders
--------------------------
1路鼓楼1
1路新街口2
1路汽车站3
1路火车站4
2路新街口1
2路飞机场2
2路天安门3
3路天安门1
3路石门坎2
3路驾校3
id Stataion
---------------------
1路鼓楼-> 新街口-> 汽车站-> 火车站
2路新街口-> 飞机场-> 天安门
3路天安门-> 石门坎-> 驾校
*/
drop table test