如何将行数据拆分为多个列

时间:2012-01-19 04:08:16

标签: sql-server-2008

我有这样的数据:

ColumA
A1:Data1 A2:Data2 A3:Data3
A1:Data4 A2:Data5 A3:Data6

我想生成这样的输出:

A1        A2        A3
Data1     Data2     Data3
Data4     Data5     Data6

2 个答案:

答案 0 :(得分:0)

您可以使用pivot将行用作列这是一个有趣的链接Refer This

答案 1 :(得分:0)

declare @T table
(
  ColumnA varchar(50)
)

insert into @T values
('A1:Data1 A2:Data2 A3:Data3'),
('A1:Data4 A2:Data5 A3:Data6')

select substring(ColumnA, Pos.A1+3, Pos.A2-Pos.A1-3) as A1,
       substring(ColumnA, Pos.A2+3, Pos.A3-Pos.A2-3) as A2,
       substring(ColumnA, Pos.A3+3, Pos.AX-Pos.A3-3) as A3
from @T as T
  cross apply (select charindex('A1:', ColumnA) as A1,
                      charindex('A2:', ColumnA) as A2,
                      charindex('A3:', ColumnA) as A3,
                      len(ColumnA)+1            as AX) as Pos