WITH句を使用するとSQLの先頭に仮想のビューのように副問い合わせのビューを定義することができる。
1つのSQLの中に同じ条件の副問い合わせを複数回記述しなければならない場合に使用すると便利
WITH句を使用しなかった場合
SELECT * FROM (SELECT 'test' FROM DUAL) UNION ALL SELECT * FROM (SELECT 'test' FROM DUAL);
WITH句を使用した場合
WITH HOGE_V AS (SELECT 'test' FROM DUAL) SELECT * FROM HOGE_V UNION ALL SELECT * FROM HOGE_V;
ちなみにSQL Serverでも使用可能
WITH句を使用した場合 (SQL Serverの場合)
WITH HOGE_V AS (SELECT 'test' AS column1) SELECT * FROM HOGE_V UNION ALL SELECT * FROM HOGE_V;
動作確認環境:Oracle 10g,SQL Server 2010