SQL Serverでテーブルフィールド値のすべてのシーケンシャルを構築する方法私はこれに似たテーブルを持っています
a b b c d へ
同様の出力を持つこのテーブルの関数が必要です
a ab アブ abbc あべっく abbdcf
それらのアイテムを注文するIDがあると仮定します。
SQL Serverでテーブルフィールド値のすべてのシーケンシャルを構築する方法私はこれに似たテーブルを持っています
a b b c d へ
同様の出力を持つこのテーブルの関数が必要です
a ab アブ abbc あべっく abbdcf
それらのアイテムを注文するIDがあると仮定します。
これらのアイテムを注文する (ギャップのない、増加する) ID があると仮定します。
with tree (id, all_items) as (
select id, cast(data as varchar(max)) as all_items
from foo
where id = 1
union all
select c.id, p.all_items + c.data
from foo c
join tree p on p.id = c.id - 1
)
select all_items
from tree
SQLFiddle の例: http://www.sqlfiddle.com/#!3/8840c/1
Declare @Temp Table
(
Id Int Identity(1,1),
Data Varchar(1)
)
Insert Into @Temp(Data) Values ('a')
Insert Into @Temp(Data) Values ('b')
Insert Into @Temp(Data) Values ('b')
Insert Into @Temp(Data) Values ('c')
Insert Into @Temp(Data) Values ('d')
Insert Into @Temp(Data) Values ('f')
Declare @i Int = 1, @j Int = 1,@Str Varchar(max) = '',@AllStr Varchar(max) = ''
While(@i <= (Select MAX(Id) From @Temp))
Begin
While(@j <= @i)
Begin
Set @Str += (Select Data From @Temp Where Id = @j)
Set @j += 1
End
Print @str
Set @j = 1
Set @i += 1
Set @Str = ''
End