[英]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.