SQL99で共通表式と呼ばれている記述方法、WITH句を使ってみる。

  • 元のSQL…外側のSELECTのFROMにサブクエリーを記述。
SELECT * FROM EMP A  , ( SELECT EMPNO FROM EMP WHERE SAL > 2000) OVER2K
WHERE OVER2K.EMPNO  = A.EMPNO;
  • WITH句を使って書き換えた例。冒頭でサブクエリーを記述し、ビューのように使用できる。
WITH OVER2K AS ( SELECT EMPNO FROM EMP WHERE SAL > 2000)
SELECT * FROM EMP A , OVER2K
WHERE OVER2K.EMPNO  = A.EMPNO;

この単純な例ではあまり恩恵はないですが、システムに数個は出現する(?)巨大なSELECTを記述する際には見やすさで有効と思います。
長大SQLって、パズル組み立てるみたいで面白さもあるけど、大体後で見ると訳わかんないことが多いので。他人のとか特に。
前段にWITHで分離して記述されているだけでも、読みやすいと思われます。

facebook slideshare rubygems github qiita