WHERE PERDIDO - Oracle
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]
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
Curtidas 0
Melhor post
Hector Figueroa
02/10/2015
Boas Dayane ^^,
tente colocar um where aqui :
se ão funcionar tente colocar um sql por fora exemplo:
tente ai
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
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"
ORA-00904: "START_DATE": identificador inválido
00904. 00000 - "%s: invalid identifier"
GOSTEI 0
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
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]
[img]http://arquivo.devmedia.com.br/forum/imagem/456667-20151005-104522.jpg[/img]
GOSTEI 0
Hector Figueroa
02/10/2015
Me mostre a consulta completa que você esta fazendo
GOSTEI 1
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');
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