Bom dia pessoal,
Estou com um probleminha em uma consulta que é muito importante.
Eu precisava de algo que me mostrasse os GAPs (furos) em uma sequencia de datas..
Exemplo:
Vejam que do dia 02-09 ele pula para 05-09.. Faltam os dias 03 e 04.
Então consegui a solução, ele fala onde esta faltando os dias:
Agora meu grande problema é que essa tabela tem muuuuuuuitas datas, muiiitos dados e eu preciso usar o WHERE para selecionar um periodo de datas, e o que acontece? Meu where está se perdendo, sem o WHERE funciona (bem demorado) com o where ele não me mostra os furos na sequencia de datas.
Preciso por exemplo, buscar data a partir do dia 15-09-2015, OU por exemplo, algo que esteja entre 01-08-2015 e 13-09-2015.
E não consigo.
Segue código:
[color=#ff0000]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’);[/color]
Se tirar o WHERE ela vai funcionar perfeitamente, com o where não.
Alguém pode me ajudar? Onde devo inserir meu where?
Outro código que tenho é:
[color=#008800]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 ) GAP
from seq left outer join DIASUSADOS on (l = TO_NUMBER(TO_CHAR(START_DATE,'DD')))
--WHERE DIASUSADOS.START_DATE >= TO_DATE(’15-09-2015′,’DD-MM-YYYY’)
GROUP BY DIASUSADOS.START_DATE, l
order by 1, START_DATE;[/color]