c1 c2
10 30
20 40
C1、C2は2つの列であり、SQLクエリを使用して以下の出力が必要です。
C3
10
20
30
40
使用UNION
(暗黙的に区別)またはUNION ALL
:
SELECT c1 AS c3 FROM tablename
UNION ALL
SELECT c2 FROM tablename
UNION
キーワードなしALL
で、クエリの結果は一意の値のみを使用できます。複製を保持する場合は、を使用しますUNION ALL
。
SELECT C1 as C3 FROM TABLENAME
UNION
SELECT C2 as C3 FROM TABLENAME
UNION ALL
クエリを使用して結果を取得する必要があります。
select c1 as c3
from yourtable
union all
select c2 as c3
from yourtable
SQL FiddlewithDemoを参照してください
このタイプのクエリは、複数の列から複数の行にデータのピボットを解除します。
使用しているデータベース製品によってUNPIVOT
は、データ変換を行う機能を備えているものもあります。たとえば、SQL ServerまたはOracleのいずれかを使用している場合は、次を使用できます。
select c3
from yourtable
unpivot
(
c3 for col in (c1, c2)
) u
order by c3
SQL FiddlewithDemoを参照してください
これにより、テーブルごとの順序が保持されます
SELECT 1 AS ordering, c1 AS c3
FROM mytable
UNION
SELECT 2 AS ordering, c2 AS c3
FROM mytable
ORDER BY ordering, c3
注文列を無視できない場合は、それをサブクエリに変えることができます
SELECT c3
FROM (
SELECT 1 AS ordering, c1 AS c3
FROM mytable
UNION
SELECT 2 AS ordering, c2 AS c3
FROM mytable) a
ORDER BY ordering, c3