【Oracle】WITH句について


OracleのWITH句の使い方


 


 
WITHを使うと副問い合わせ部分を別に切り出して定義することができる。
たとえば

select a.*  
from (select sysdate as SYSDATE_DATE  
            ,to_char(sysdate,'yyyy/MM/dd HH24:mi:ss') as SYSDATE_CHAR  
      from dual  
      ) a  


は、
副問い合わせ部分の表別名aをWITHで切り出して

with b as   
(select sysdate as SYSDATE_DATE  
       ,to_char(sysdate,'yyyy/MM/dd HH24:mi:ss') as SYSDATE_CHAR  
 from dual  
)   
select  
  b.*  
from b  

と記述することができる。
両方とも結果は同じ。
※「WITH b」にしたのは流行に乗っかったネタです。意味はありません

この程度ならいちいちWITHにする必要もない気がするが、
同一の副問い合わせとの結合を複数個必要としている場面などで、
毎回同じ副問い合わせを書いていると、
効率や保守性が悪いので、こうやってWITHで切り出すやり方を使うとその辺がクリアになる。

個人的にはあまりなじみがないのだが、
この前ちょっと遭遇したので備忘録で残してみる。