SELECT ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL-1) ) AS qstart
, ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1 AS qend
FROM ( SELECT TO_DATE('&start_date') AS start_date
, TO_DATE('&end_date') AS end_date
FROM DUAL
) PARAM
CONNECT BY ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1
<= PARAM.end_date
パラメータのルール。目的に合わせてクエリを調整する必要がある場合があります。
- start_dateが正確な四半期の開始ではない場合、四半期に含まれる開始日を効果的に使用します。
- end_dateが正確な四半期末ではない場合、end_dateの前に終了した四半期で終了します(終了日を含む四半期ではありません)。