まずは、間違った union all / union 句の使用例です。ソートした結果をマージしようとしていますがエラーとなってしまいます。ここでは、2パターンのエラーとなる SQL と正常に union を行う SQL サンプルを掲載しています。
スポンサーリンク
ORA-00933: SQLコマンドが正しく終了されていません。
select id, name from table1 order by id union all select id, name from table1 order by id -- ORA-00933: SQLコマンドが正しく終了されていません。
ORA-00907: 右カッコがありません
括弧で括っても駄目です。
(select id, name from table1 order by id) union all (select id, name from table1 order by id) -- ORA-00907: 右カッコがありません。
union 句のあとに order by 句が解釈されるため、上記のようにエラーとなっています。 ソートした結果同士を union 句で結合するエラーとならない SQL を以下に示します。
ソートした結果同士を union で結合するSQL例
select id, name from (select id, name from table1 order by id) union all select id, name from (select id, name from table1 order by id)
また、union で結合した結果全体を並び替えるには、以下の SQL で問題ありません。
select id, name from table1 union all select id, name from table1 order by id