select dia
, mês
, ano
, data
, dia_semana
, dia_semana_extenso
, dia_util
from (
select dia
, mês
, ano
, data
, dia_semana
, dia_semana_extenso
, case
when fe.dt = x.data then 'F'
when dia_semana in (1, 7) then 'N'
else 'S'
end dia_util
from(
select dia
, mês
, ano
, data
, to_number(to_char(data, 'd')) dia_semana
, decode(to_char(data, 'd'), 1, 'DOMINGO'
, 2, 'SEGUNDA-FEIRA'
, 3, 'TERÇA-FEIRA'
, 4, 'QUARTA-FEIRA'
, 5, 'QUINTA-FEIRA'
, 6, 'SEXTA-FEIRA'
, 7, 'SÁBADO') dia_semana_extenso
from (
select dia
, mês
, to_number(to_char(last_day(to_date(mês, 'mm')), 'dd')) ult_dia
, to_number(ano) ano
, to_date(dia||'-'||mês||'-'||ano, 'dd-mm-yyyy') data
from (
select level dia
, row_number() over (partition by level order by 1) mês
, to_char(to_date('2008', 'yyyy'), 'yyyy') ano --- aqui
from (
select level lv
from dual
connect by level <= 12
)
connect by level <= 31 and lv = 12
order by level
)
where dia <= to_number(to_char(last_day(to_date(mês, 'mm')), 'dd'))
)
order by mês
)x
, feriad fe
where x.data = fe.dt(+)
)
/
será qui alguém pode me ajudar ??