2012-05-09 143 views
4

我想将一个记录列拆分成多行。将SQL列转换为行

如果我有这样一个SQL语句如下:

SELECT 1,2,3 

结果:

1 | 2 | 3 

如何转换,为下面的结果呢?

1 
2 
3 

我目前使用MS SQL 2008

+3

这真的是你想要做什么?如果不是,你应该发布更真实的东西。 – APC

+0

您可能想看看[UNPIVOT](http://msdn.microsoft.com/en-us/library/ms141723.aspx)。 –

回答

3
SELECT 1 
UNION 
SELECT 2 
UNION 
SELECT 3 
+0

有没有办法做到这一点,而不修改原来的SELECT语句?即SELECT converttorow(SELECT 1,2,3) – ChrisCrous

+1

@ChrisCrous:你可以创建你的函数或存储过程,只需传递这些逗号分隔值,然后你可以把你的t-sql逻辑生成这样的输出。 –

+1

Check [Convert逗号分隔为行](http://www.sqlservercentral.com/Forums/Topic1043869-149-1.aspx#bm1043876)和oracle [转换行中逗号分隔的字符串](https://forums.oracle.com /forums/thread.jspa?threadID=2320358).. [this](http://www.sqlservercentral.com/Forums/Topic968028-338-1.aspx#bm968044)和[this](http:// stackoverflow。 com/questions/887628/convert-multiple-rows-into-one-with-comma-as-separator).. [This](http://stackoverflow.com/questions/5493510/turning-a-comma-separated-字符串到个体,行) –

0

要总结以上的评论:

  • 如果要列转换为行,你将需要使用 T-SQL UNPIVOT子句。

    如果要拆分包含逗号分隔值 一列,你需要创建一个函数(example here