簡體   English   中英

從同一個表中選擇多個列而不使用表聯合

[英]Select multiple columns from the same table without tables union

我想創建一個查詢以從表中選擇多個列,並將結果顯示為單個列。 我知道我可以使用此查詢執行此操作:

select a from Z
union
select b from Z
union 
select c from Z
union 
select d from Z
....

但就我而言,表Z是一個大約50行的子查詢,我不想復制和粘貼。 所以我想在Z只出現一次的查詢中有這個。 我不知道這是否可行。

你知道這樣做的方法嗎?

先感謝您。

問候。

從Oracle 11gR1開始,您可以使用unpivot運算符,當然要確保所有列都具有相同的數據類型:

SQL> select val
  2    from (select 1 col1
  3               , 2 col2   
  4               , 3 col3
  5            from dual)
  6  unpivot(
  7    val for col in (col1, col2, col3)
  8  )
  9  ;

       VAL
----------
         1
         2
         3

您可以使用WITH子句來完成它:

with Z as (
    select ... from ... -- <<== Put your big query here
)
select a from Z
union
select b from Z
union 
select c from Z
union 
select d from Z

頂部的with子句使Z可用於查詢的其余部分,而不必重復自己。

這是sqlfiddle上的一個演示

暫無
暫無

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

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