2014-02-12 36 views
0

我需要一個逗號分隔字符串的解決方案。我有一個返回一列逗號分隔爲兩列的字符串

declare @datap varchar(200) 
set @datap = 'KIA,A,TEST1,I,KIA2,A,KIA2,A,KIA3,I' 
select * from dbo.fs_1_fn_split(@datap, ',') 

它給人以這種形式或者也可以命名值一列列的列表中列顯示的功能2

id value 
1 KOA 
2 A 
3 TEST1 
4 I 
5 KIA2 
6 A 
7 KIA2 
8 A 
9 KIA3 
10 I 

好,我需要轉換這分爲兩列

KOA A 
TEST1 I 
KIA2 A 
..... 
+0

請發佈dbo.fs_1_fn_split的源代碼 –

回答

4

您可以通過在將值分開後聚合結果來完成此操作。這裏有一種方法:

select max(case when id % 2 = 1 then value end) as value1, 
     max(case when id % 2 = 0 then value end) as value2  
from (select id, value, (id-1)/2 as grp 
     from dbo.fs_1_fn_split(@datap, ',') 
    ) t 
group by grp 
+0

謝謝Gordon ..優秀的解決方案。 – Ammad

+0

嗨戈登,我有一個類似的任務,其中我需要使用SQL中的另一個逗號分隔的字符串3列,我必須使用id%3 = 1和0和內部sql(id-1)/ 3作爲grp? – Ammad

+0

@qazifarhan。 。 。是。使用模數運算符來選擇三者中的哪一個。使用'/ 3'將記錄分成三組。 –