 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
edu666ardo Novato

Registrado: Sábado, 5 de Março de 2011 Mensagens: 2
|
Enviada: Ter Mar 18, 2014 10:43 am Assunto: FireBird Having |
|
|
Bom dia.
Possuo uma tabela com:
ID,ID_SOLICITACAO,MES,DATA ,HORA,ID_CLIENTE
Tenho registros duplicados de solicitações no mês, preciso excluir os registros duplicados onde a data seja mais antiga.
Trabalhava com MySQL e era tranquilo de montar esta SQL.
SELECT * FROM TABELA T
WHERE ID_CLIENTE=1
GRUOP BY ID_SOLICITACAO,MES
HAVING COUNT(ID_SOLICITACAO) >1
ORDER BY ID_SOLICITACAO,DATA DESC, HORA DESC
No Firebrird não posso declarar no group by menos campos do que declarei no select, desta forma não consigo montar uma SQL que me retorne os itens corretos para excluir.
select h.ID,
h.ID_SOLICITACAO,
h.MES,
h.DATA,
h.HORA,count(h.ID_SOLICITACAO)
from HISTORICO h
where
h.ID_CLIENTE=1
group by h.ID_SOLICITACAO,h.MES,h.DATA,h.HORA,h.ID
having count(h.ID_SOLICITACAO) > 1
order by h.ID_SOLICITACAO, h.DATA asc, h.HORA desc
Como poderia montar esta consulta? |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
|
Voltar ao Topo |
|
 |
thomazs Moderador


Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Qui Mar 20, 2014 10:53 pm Assunto: |
|
|
Isso não serviria?
Código: | delete from
Tabela
where
id_cliente = 1
and (select count(*) from tabela t where t.id_cliente=1 and t.id_solicitacao=tabela.id_solicitacao and t.mes=tabela.mes)>1
and (select min(t.data) from tabela t where t.id_cliente=1 and t.id_solicitacao=tabela.id_solicitacao and t.mes=tabela.mes)=data |
_________________ Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django |
|
Voltar ao Topo |
|
 |
edu666ardo Novato

Registrado: Sábado, 5 de Março de 2011 Mensagens: 2
|
Enviada: Seg Mar 31, 2014 10:49 am Assunto: |
|
|
Bom dia Thomazs.
Muito obrigado, este delete me ajudou. |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|