Hola,
Tengo esta inquietud.
Resulta que en SQL-Server 2008 tengo en una tabla dos registros duplicados, es decir ambos con la misma información generada por una falla interna en el sistema, entonces yo identifico estos registros apoyándome en la función y así los encuentro
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
Pero como hago para eliminar tan solo un registro de los dos?
Gracias y en espera de sus comentarios al respecto,
Atentamente,
Oscar
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfoxpro+unsubscribe@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfoxpro+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
No recuerdo si SQL Server cuenta con la clausula TOP u otra equivalente que te permita limitar la cantidad de filas a procesar.Entonces en el DELETE FROM tuTabla TOP 1 WHERE tus condiciones.Saludos: Miguel, La Pampa (RA)
Buenas tardes
No había leído esto, pero mucho cuidado con eliminar los registros con ID iguales, y más sino hay un dato que diferencie uno del otro pues al correr esa rutina que te están enviando, simplemente se van a eliminar de la tabla “cuenta” ambos registros duplicados, pues el WHERE va a ver ambos registros y no sólo uno, esa rutina te sirve, si es el caso, en ver cuales “ID” están duplicados si lo usas en un “SELECT”, para que ese error no te ocurra, debes cambiar tu ID a un campo índice primario para que no se duplique, ya que si tratas de duplicarlo, el mismo motor de BD te lo va a impedir, con eso podrás detectar en que línea de tu sistema estás duplicando el registro, la eliminación creo que deberás hacerla a pie usando una vista con la herramienta que estés usando, SQL o mySQL según corresponda.
Un ejemplo con una tabla temporal en SQL, sería:
create clustered index IxTemp
on #xTemp (nIDINT)
--otro ejemplo (SQL) con un poco mayor información (incluye el “select” con el temporal (INTO #TEMP1):
SELECT AA.GRUPONOM,B.DESGRUCCP, AA.CODTRA,AA.NOMBRE,AA.APELLIDO,AA.FECHA_ING,
AA.COND_TRA,AA.GRUPO1,AA.FE_EGRESO,CAST(1 AS INT) AS EXISTE
INTO #TEMP1
FROM (select A.*,DBO.CodNomAsig(A.CODTRA) AS GRUPONOM
from remctatra A (NOLOCK)
where A.cond_tra<>'RE') AS AA LEFT JOIN
REMGRUCCP B (NOLOCK) ON AA.GRUPONOM=B.CODGRUCCP
WHERE CODTRA IN
(SELECT CODTRA FROM REMTRAASO WHERE CODGRUCCP IN (SELECT CODGRUCCP FROM #NomObl ));
create clustered index #IxTempP
on #TEMP1 (CODTRA,GRUPONOM);
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Esa es la vía
En SQL puedes hacer lo mismo que en VFP pero mucho más rápido, seguro y sin muchas limitaciones de las tablas DBF, el asunto es que tienes que ir migrando los desarrollos a manejo de tablas SQL y no VFP, no es difícil pero toma su tiempo!
Saludos
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Excelente ejemplo amigo Eduardo
Pero en ese caso debes tener otro campo contra el que comparar, creo que el caso del planteamiento, los datos son idénticos, debería empezar por crear un segundo campo para luego llenarlo de manera que se diferencie cada registro y luego poder correr esa rutina, al final debe escoger el camino que más le convenga y poner el campo ID como primary key
Saludos
De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Eduardo Martinez
Enviado el: viernes, 16 de junio de 2017 18:13
Para: mundovis...@googlegroups.com
Asunto: Re: [Mundo Visual FoxPro] Eliminar un solo registro de los duplicados
Personalmente nunca elimino registros de ninguna de mis tablas, en su lugar yo cuento con una columna FechaBaja la cual evaluo en cada consulta y si NULL es falso la dejo de lado.
--
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Saludos Carlos
El top existe pero para los select, pero igual me causo ruido tu planteamiento y este fue la respuesta del SQL:
/*------------------------
select * from remhistra (nolock) WHERE codtra='1x2'
DELETE FROM remhistra TOP 1 WHERE codtra='1x2'
------------------------*/
Mens. 156, Nivel 15, Estado 1, Línea 2
Sintaxis incorrecta cerca de la palabra clave 'TOP'.
Es decir, no se puede usar TOP 1 en un DELETE
Saludos
De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Carlos Miguel FARIAS
Enviado el: viernes, 16 de junio de 2017 17:08
Para: mundovisualfoxpro <mundovis...@googlegroups.com>
Asunto: Re: [Mundo Visual FoxPro] Eliminar un solo registro de los duplicados
No recuerdo si SQL Server cuenta con la clausula TOP u otra equivalente que te permita limitar la cantidad de filas a procesar.
Entonces en el DELETE FROM tuTabla TOP 1 WHERE tus condiciones.
Saludos: Miguel, La Pampa (RA)
El 16 de junio de 2017, 13:35, Alex Orihuela Rosales <alex.orihu...@gmail.com> escribió:
Bueno yo crearía un campo auto incremental, luego elimino el registro que deseo y luego elimino el campo auto incremental.
Saludos.
El 16 de junio de 2017, 10:54, Oscar Bonet <dirsi...@cialta.com> escribió:
Hola,
Tengo esta inquietud.
Resulta que en SQL-Server 2008 tengo en una tabla dos registros duplicados, es decir ambos con la misma información generada por una falla interna en el sistema, entonces yo identifico estos registros apoyándome en la función y así los encuentro
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
Pero como hago para eliminar tan solo un registro de los dos?
Gracias y en espera de sus comentarios al respecto,
Atentamente,
Oscar
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfoxpro+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfoxpro+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfoxpro+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfoxpro+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Libre de virus. www.avast.com
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfoxpro+unsubscribe@googlegroups.com.