Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago_BB

Problema com query no oracle

Recommended Posts

ola pessoal.

 

Tenho o seguinte script:

 

SELECT *

FROM (SELECT CASE WHEN (FERIADO_TAB = 1 OR FERIADO_TAB = 2)

THEN

(SELECT *

FROM(SELECT A.DATA_TAB

FROM TAB A, TAB B

WHERE A.DATA_TAB < B.DATA_TAB

AND A.FERIADO_TAB = 0

AND B.DIA_SEMANA_TAB = 6

AND ROWNUM = 1

ORDER BY A.DATA_TAB DESC))

ELSE

DATA_TAB

END

FROM TAB B

WHERE CENTRO_CUSTO_TAB = 30400

AND DATA_TAB < '20091228'

AND DIA_SEMANA_TAB = 6

AND ROWNUM = 1

ORDER BY DATA_TAB DESC)

WHERE ROWNUM = 1

 

 

 

Esse script é referente a uma regra.

 

Pra começar; o campo FERIADO_TAB pode ser:

 

0 - dia util

1 e 2 - feriado

 

Beleza... e o campo dia_semana_tab pode ser:

1-segunda

2- terça

3- quarta

4-quinta

5-sexta

6-sábado

7-domingo

 

O que acontece?

 

Caso meu campo DIA_SEMANA_TAB no script seja 6 (sábado)...

 

Vamos supor que eu entre com o dia 27/12/2009... deverá retornar o sábado anterior a essa data, caso esse sábado seja feriado, deverá retorna o dia útil anterior a ele, ou seja, vamos supor que dia 26/12/09 seja feriado... deverá retornar dia 25/12/05.

 

Até ai ta funcionando... porém... dia 25 é feriado.. entaum preciso que me retorne o dia util anterior.. ou seja.. dia 24/12/2009.

 

Ta devolvendo dia 25/12/09.. mesmo sendo feriado!!

 

Espero ter sido claro..

 

 

Porém, o script acima esta retornando 24/12/2010... e quero que retorne 24/12/2009.

 

Espero ter sido claro!!

 

Atte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.