簡體   English   中英

SQL-將多列數據合並為一列

[英]SQL - Combine data from several columns into one column

我正在創建復雜的CTE查詢。 在MSSQL中
哪個結果會是這樣

| Id1 | Id2 | Id3 |
|  1  |  2  |  3  |
|  5  |  4  |  1  |
|  6  |  5  |  2  |

現在我需要將所有數據合並到類似這樣的列中

| Ids |
|  1  |
|  2  |
|  3  |
|  5  |
|  4  |
|  1  |
|  6  |
|  5  |
|  2  |

我想嘗試避免合並所有並按每列選擇
謝謝

我最喜歡的方法是使用cross apply

select v.id
from t cross apply
     (values (t.id1), (t.id2), (t.id3)) v(id); 

像使用unpivot的版本一樣,它只讀取一次表。 使用union all的版本將掃描表三次。 但是, cross applyunpivot更強大,並且需要更少的鍵入。

AFAIK,除了使用UNION操作外,沒有其他選擇。 UNION操作的基本目的是僅...合並來自多個源/結果集的記錄。 所以你可以喜歡

select Id1 from tbl1
union
select Id3 from tbl1
union
select Id2 from tbl1

您可以使用UNPIVOT

SELECT Ids
FROM
(
    SELECT Id1, Id2, Id3
    FROM CTE
) d
UNPIVOT 
(
    Ids for id in (Id1, Id2, Id3) 
) u
Use UNPIVOT table to get your result :

CREATE TABLE #table( Id1 INT ,Id2 INT , Id3 INT )
INSERT INTO #table(  Id1 ,Id2 , Id3 ) 
SELECT 1 ,  2 ,  3 UNION ALL
SELECT 5 ,  4 ,  1 UNION ALL
SELECT 6 ,  5 ,  2 

SELECT _Result [Result]
FROM 
(
  SELECT Id1 ,Id2 , Id3
  FROM #table
)A
UNPIVOT
 (
  _Result FOR Id IN (Id1 , Id2 , Id3)
 ) UNPvt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM