--建測試表:
create table test1 ( id int,start int,[end] int)
--添加測試資料:
insert test1 select 1,1,5
union select 2,6,10
union select 3,21,25
union select 4,26,30
union select 5,51,60
--建立拼接字串的函數:
create procedure proA
as
begin
declare @s varchar(8000)
--給變數賦表中第一行的相應值, cast(min(start)-1 這裡是為了配合後面的全表查詢中的第一行給正確地接上。注意,如果流水號是從0開始,'-'要相應用其他字元如“+”號替代,最後 select @s 時,再改回‘-’號,具體的語句是:select replace(@s,'+','-'):
select @s= + cast(min(start) as varchar(10)) + '-'
+ cast(min(start)-1 as varchar(10))
from test1
--順序查詢並拼接字串:
select @s= left(@s,len(@s)-charindex('-',reverse(@s))+1)
+ case when cast(right(@s,charindex('-',reverse(@s))-1) as int)+1
=start
then cast([end] as varchar(20))
else right(@s,charindex('-',reverse(@s))-1) + ','
+ cast(start as varchar(10)) + '-'
+ cast([end] as varchar(10))
end
from test1
order by start