2012-10-13 21 views
0

如何建立在SQL Server 表字段值的所有順序我也有類似的表這個如何建立一個表的字段值的所有連續在SQL Server

 
a 
b 
b 
c 
d 
f 

我需要一個功能,該表具有類似的輸出

 
a 
ab 
abb 
abbc 
abbcd 
abbdcf 

假設我有訂購這些項目的ID。

+0

記住。 SQL數據庫有存儲數據不格式化數據。 – hims056

+0

@ hims056它是一個真正的問題我的表有超過1千萬像這樣的記錄 – jozi

回答

4

假設你有一個訂購的項目一個(無間隙,增大)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

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 
相關問題