2012-05-09 144 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