Query para listar colisões de datas

1. Query para listar colisões de datas

André Canha
xklepio

(usa Ubuntu)

Enviado em 21/12/2009 - 22:08h

Boas, tenho o seguinte problema:
uma tabela com dois campos ID e DATA. Quero efectuar uma query em que o objectivo é listar os ID's em que as datas colidem. Por exemplo se tiver a tabela seguinte:

ID DATA
1 [2009-02-01]
2 [2009-02-02]
3 [2009-02-03]
4 [2009-02-01]
5 [2009-05-23]
6 [2009-02-01]
7 [2009-05-23]

Devia dar-me como resultado:

ID DATA
1 [2009-02-01]
4 [2009-02-01]
6 [2009-02-01]
5 [2009-05-23]
7 [2009-05-23]

Agradecia imenso uma ajuda.



  


2. Re: Query para listar colisões de datas

Celso Lira
celso.lom

(usa Debian)

Enviado em 14/01/2010 - 20:01h

Cara vc tem que usar dois alias para fazer isso. Da uma olhadinha ai no código.

select id, dat as datl,(select case when (select count(*) from test.teste where dat = datl) > 1 then 1 when (select count(*) from test.teste where dat = datl) <= 1 then 0 end) as dup from test.teste
having dup = 1 order by DAT;

No seu banco basta vc substituir o nome da coluna DATA por DAT e vai funcionar.

Falow!
PS: Feche o tópico caso isso responda sua pergunta.


3. Re: Query para listar colisões de datas

Celso Lira
celso.lom

(usa Debian)

Enviado em 15/01/2010 - 12:56h

Cara assim também funciona, e a estética do código ta melhor. Falow!

select id, dat as datl from test.teste
having (select case
when (select count(*) from test.teste where dat = datl) > 1 then 1
when (select count(*) from test.teste where dat = datl) <= 1 then 0 end)
order by DAT;






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts