Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Borrar registros duplicados evaluando varios campos

Hola a tod@s.

Necesitaría una consulta SQL para eliminar registros duplicados evaluando varios campos y manteniendo el que tenga la fecha más reciente. Por ejemplo, tengo estos registros:

CLIENTE ARTICULO FECHA
000001 001 01/01/2017
000002 001 01/02/2017
000001 001 15/01/2017
000002 001 31/01/2017

necesitaría borrar los registros que tengan duplicados el campo cliente y artículo y, dentro de eso, que los registros que se eliminen sean los de fecha más antigua y mantenga el más reciente. En este ejemplo tendría que borrar el primer y cuarto registro.

Gracias y un saludo.


__________________
Be water my friend.
Responder Con Cita
  #2  
Antiguo 29-04-2017
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Este enlace te puede servir...

https://geeks.ms/lmblanco/2015/07/06...-sql-server-1/
Responder Con Cita
  #3  
Antiguo 29-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Gracias Luis, a partir de esa página he construido esta instrucción:

Código:
SELECT * FROM TABLA
WHERE CLIENTE+ARTICULO IN (
   SELECT CLIENTE+ARTICULO
   FROM TABLA
   GROUP BY CLIENTE,ARTICULO
   HAVING COUNT(*) > 1
)
ORDER BY CLIENTE,ARTICULO,FECHA
El problema es que me saca TODOS los registros y yo quiero eliminar el duplicado de fecha más antigua y de esta manera creo que no podré hacerlo. Necesitaría una consulta en la que no dependiera del "ORDER" para poder hacer un "DELETE" solo de los registros duplicados manteniendo el de fecha más reciente.

Seguimos mirando.....
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 29-04-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que tendrás que hacer un 'stored procedure'.
Responder Con Cita
  #5  
Antiguo 29-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo que tendrás que hacer un 'stored procedure'.
A mi no me hables raro, ein?

Viendo que estaba la cosa complicada estoy haciendo un pequeño programa.

Gracias y un saludo
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 29-04-2017
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 280
Poder: 8
manelb Va por buen camino
Yo creo que esposible hacerlo en una sola sentencia.
Otra cosa el rendimiento que pueda tener.

Estoy fuera el fin de semana y no tengo ordenador, si no te urge mucho el martes lo pruebo y te gigo algo.
Que base de datos utilizas?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema al borrar varios registros giocatore Conexión con bases de datos 6 27-04-2011 06:36:02
Borrar varios registros en un Dbrepeater David82 PHP 0 09-09-2008 13:40:37
Borrar datos duplicados Sr.Scorpion Conexión con bases de datos 4 20-06-2005 19:52:57
Borrar duplicados jefraub SQL 2 22-03-2005 17:48:06
Borrar registros duplicados. Adrian Murua Firebird e Interbase 3 07-10-2003 06:28:46


La franja horaria es GMT +2. Ahora son las 21:36:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi