将列值拆分为行并保留第二列的值

时间:2017-11-09 12:38:04

标签: sql sql-server sql-server-2008

我在我们的一张桌子上遇到麻烦,我打算在viz工具中使用它们。也许你可以指导我如何在下面实现。

我的表格如下:

123 | ABC DEF
456 | GHI JKL MNO
789 | PRS

我想将第二列拆分成行并保留第一列的值:

123 | ABC
123 | DEF
456 | GHI
456 | JKL 
456 | MNO
789 | PRS

你能告诉我如何实现这个目标吗? 提前致谢。干杯!

1 个答案:

答案 0 :(得分:2)

您可以使用XML节点方法来分割数据:

SELECT ID, split.a.value('.', 'VARCHAR(MAX)') DATA
FROM
(
   SELECT ID, CAST('<A>'+REPLACE(DATA, ' ','</A><A>')+'</A>' AS XML) AS data from <table_name>
) a
CROSS APPLY data.nodes('/A') AS split(a);

结果:

ID  DATA
123 ABC
123 DEF
456 GHI
456 JKL
456 MNO
789 PRS