2014-02-12 15 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'将记录分成三组。 –