SQL - anidar case

   
Vista:

anidar case

Publicado por ignacio (2 intervenciones) el 18/02/2014 21:34:36
Buenas noches,

A ver si me podéis echar un cablecillo,

Necesito, en función de unos valores devueltos , obtener un nuevo valor:

Esto es lo que tengo hasta ahora :

1
2
3
4
5
6
7
8
9
with data as (select add_months(trunc(to_date(sysdate),'Year'),rownum-1) d
from dual
connect by rownum <= 12)
SELECT next_day(last_day(d)-7,'Sunday') as r1,
case
when to_char(next_day(last_day(d)-7,'Sunday'),'MM')=3 then ' desde'
when to_char(next_day(last_day(d)-7,'Sunday'),'MM')=10 then 'hasta'
end
from data


Y en función de lo obtenido anteriormente :

Lo que necesito es dar forma a lo siguiente( desde y hasta serian los valores que se obtienen del case anterior)

when sysdate < desde then +2
when sysdate> hasta then +2
else +1

En resumen, que si para una fecha pasada, esta entre el ultimo domingo de marzo y el ultimo domingo de octubre pase +1 y sino un + 2 ( lo digo porque a lo mejor se os ocurre otra forma)

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

anidar case

Publicado por Isaias (690 intervenciones) el 18/02/2014 22:35:30
¿De que motor estamos hablando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

anidar case

Publicado por ignacio (2 intervenciones) el 18/02/2014 22:41:23
Es un motor oracle 11 g.

El "problema" , es que se llama desde un aplicativo que no permite pl/sql , así que tiene que ser todo mediante sql "nativo".

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar