Незначительное Усовершенствование вашей версии, сначала генерируя first day
ВСЕХ месяцев, а затем используйте это в своем запросе.
WITH ALL_MONTHS AS
(SELECT ADD_MONTHS(TO_DATE('01-JAN-2014', 'DD-MON-YYYY'),LEVEL-1) as MONTH_FIRST_DATE
FROM DUAL
CONNECT BY LEVEL<=12)
SELECT NEXT_DAY(NEXT_DAY((TRUNC(MONTH_FIRST_DATE,
'MONTH') - 1),
'SATURDAY'),
'SATURDAY') SECOND_SATURDAY
FROM ALL_MONTHS;
ВСЕ ПОСЕТИТЕЛИ !!
WITH ALL_SATURDAYS AS
(SELECT TO_CHAR(TO_DATE('01012014','DDMMYYYY'),'WW') * (level) AS WEEK_NO,
NEXT_DAY(TO_DATE('01012014','DDMMYYYY') + (TO_CHAR(TO_DATE('01012014','DDMMYYYY'),'WW') * (level-1) * 7),'SAT') AS SATURDAY_DATE,
row_number() OVER (PARTITION BY TO_CHAR(NEXT_DAY(TO_DATE('01012014','DDMMYYYY') + (TO_CHAR(TO_DATE('01012014','DDMMYYYY'),'WW') * (level-1) * 7),'SAT'),'MON') ORDER BY level) AS Pos
FROM DUAL
CONNECT BY level<= 52
ORDER BY 1
)
SELECT SATURDAY_DATE,POS FROM ALL_SATURDAYS WHERE POS IN (2,4) ORDER BY 1,2
Great @OracleUser .. Могу ли я узнать, как найти 2-й и 4-й субботу для всех 12 месяцев ... – Sam1604
@ Sam1604 Обновлено моего ответа !! –
Спасибо @OracleUser – Sam1604