WHERE PERDIDO - Oracle

Oracle

02/10/2015

Bom dia gente, tudo bem?

Fiz uma Querie que completa uma sequencia de datas, e mostra onde está faltando tal dia..
Está funcionando tudo certo, porém, eu não consigo utilizar o WHERE, se eu incluir ele na querie, ela não funciona mais, ignora tudo que eu fiz..
Alguém pode me dizer onde eu posso colocar meu WHERE ou se da pra usar um outro select especifico.
Agora que eu consegui pegar as datas quebradas, eu quero poder selecionar a partir de qual data desejo que seja feita a consulta.


SEM WHERE

with seq as (
select level l
from dual connect by level <= ( SELECT MAX(TO_NUMBER(TO_CHAR(START_DATE,'DD'))) FROM DIASUSADOS)
)
select l, TO_CHAR(START_DATE,'DD-MM-YYYY') as data,
decode(START_DATE, null, l ) FURO_DATA
from seq left outer join DIASUSADOS on ( l = TO_NUMBER(TO_CHAR(START_DATE,'DD')) )
GROUP BY DIASUSADOS.START_DATE, l
order by 1, DIASUSADOS.START_DATE;

Resultado:

[img:descricao=Sem where]http://arquivo.devmedia.com.br/forum/imagem/456667-20151002-104410.jpg[/img]

Se eu tirar o where do comentário, minha querie perde a função principal.

COM WHERE:
with seq as (
select level l
from dual connect by level <= ( SELECT MAX(TO_NUMBER(TO_CHAR(START_DATE,'DD'))) FROM DIASUSADOS)
)
select l, TO_CHAR(START_DATE,'DD-MM-YYYY') as data,
decode(START_DATE, null, l ) FURO_DATA
from seq left outer join DIASUSADOS on ( l = TO_NUMBER(TO_CHAR(START_DATE,'DD')) )
WHERE START_DATE >= TO_DATE('15-09-2015', 'DD-MM-YYYY HH24:Mi')
GROUP BY DIASUSADOS.START_DATE, l
order by 1, DIASUSADOS.START_DATE;

resultado:

[img:descricao=COM WHERE]http://arquivo.devmedia.com.br/forum/imagem/456667-20151002-104335.jpg[/img]
Dayane

Dayane

Curtidas 0

Melhor post

Hector Figueroa

Hector Figueroa

02/10/2015

Boas Dayane ^^,
tente colocar um where aqui :

with seq as (
select level l
from dual connect by level <= ( SELECT MAX(TO_NUMBER(TO_CHAR(START_DATE,'DD'))) FROM DIASUSADOS WHERE START_DATE >= TO_DATE('15-09-2015', 'DD-MM-YYYY HH24:Mi'))
)


se ão funcionar tente colocar um sql por fora exemplo:
select * 
from (select l, TO_CHAR(START_DATE,'DD-MM-YYYY') as data, 
decode(START_DATE, null, l ) FURO_DATA
from seq left outer join DIASUSADOS on ( l = TO_NUMBER(TO_CHAR(START_DATE,'DD')) )
GROUP BY DIASUSADOS.START_DATE, l
order by 1, DIASUSADOS.START_DATE)
where START_DATE >= TO_DATE('15-09-2015', 'DD-MM-YYYY HH24:Mi')


tente ai
GOSTEI 1

Mais Respostas

Dayane

Dayane

02/10/2015

Obrigada Hector, coloquei do jeito que você mostrou, mas da erro na linha do WHERE.

ORA-00904: "START_DATE": identificador inválido
00904. 00000 - "%s: invalid identifier"
GOSTEI 0
Hector Figueroa

Hector Figueroa

02/10/2015

Oi Dayane, e porque esqueci que o campo ta assim "TO_CHAR(START_DATE,'DD-MM-YYYY') as data" ou seja, o campo modificado esta com o apelido de data agora ^^, segue abaixo a alteração, da um olho ae:


select * 
from (select l, TO_CHAR(START_DATE,'DD-MM-YYYY') as data, 
decode(START_DATE, null, l ) FURO_DATA
from seq left outer join DIASUSADOS on ( l = TO_NUMBER(TO_CHAR(START_DATE,'DD')) )
GROUP BY DIASUSADOS.START_DATE, l
order by 1, DIASUSADOS.START_DATE)
where data >= TO_DATE('15-09-2015', 'DD-MM-YYYY HH24:Mi')

GOSTEI 1
Dayane

Dayane

02/10/2015

Oi Hector, obrigada novamente, corrigi e inseri o "where DATA.." mas ele se perdeu, não mostrou os furos na tabela, pulou do 20 para 22 e não mostrous os furos, veja:

[img]http://arquivo.devmedia.com.br/forum/imagem/456667-20151005-104522.jpg[/img]
GOSTEI 0
Hector Figueroa

Hector Figueroa

02/10/2015

Me mostre a consulta completa que você esta fazendo
GOSTEI 1
Dayane

Dayane

02/10/2015

with seq as (
select level l
from dual connect by level <= ( SELECT MAX(TO_NUMBER(TO_CHAR(START_DATE,'DD'))) FROM DIASUSADOS)
)
select *
from (select l, TO_CHAR(START_DATE,'DD-MM-YYYY') as data,
decode(START_DATE, null, l ) FURO_DATA
from seq left outer join DIASUSADOS on ( l = TO_NUMBER(TO_CHAR(START_DATE,'DD')) )
GROUP BY DIASUSADOS.START_DATE, l
order by 1, DIASUSADOS.START_DATE)
where data >= TO_DATE('15-09-2015', 'DD-MM-YYYY HH24:Mi');
GOSTEI 0
POSTAR