Хорошо, я новичок в этом connect by
вещах. Но это всегда полезно. У меня есть эта небольшая проблема, которую вы, ребята, могли бы мне помочь ..., связанный по месяцам
Учитывая начальный месяц (скажем to_char(sysdate,'YYYYMM')
) и конец месяца (скажем, to_char(add_months(sysdate, 6),'YYYYMM')
), хотите получить список месяцев между ними, в том же формате ,
Ну, я хочу использовать это в сценарии автоматизации разделов. Мой лучший снимок до сих пор (довольно жалкий) дает недостоверные месяцев eg'201034' ... (и да, я знаю, невероятно неэффективен)
Следит код:
SELECT id
from
(select to_char(add_months(sysdate, 6),'YYYYMM') as tn_end, to_char(sysdate,'YYYYMM') as tn_start from dual) tabla,
(select * from
(Select Level as Id from dual connect by Level <= (Select to_char(add_months(sysdate, 1),'YYYYMM')from dual)) where id > to_char(sysdate,'YYYYMM')) t
Where
t.Id between tabla.tn_start and tabla.tn_end
как это сделать, чтобы сделать этот запрос возвращает только допустимые месяцы? Какие-нибудь советы?
ура,
f.
Было бы намного проще автоматизировать это с помощью цикла в PL/SQL, и оно будет намного более удобным для обслуживания. – 2010-12-07 11:04:25