Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Encontrar incidencias en base de duplicados

Estas en el tema de Encontrar incidencias en base de duplicados en el foro de SQL Server en Foros del Web. hola, tengo una consulta que por ahora se me hace un poco dificil de realizar, tengo una tabla resultante de un openrowset que me saca ...
  #1 (permalink)  
Antiguo 25/02/2014, 10:02
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Pregunta Encontrar incidencias en base de duplicados

hola,

tengo una consulta que por ahora se me hace un poco dificil de realizar, tengo una tabla resultante de un openrowset que me saca los registros duplicados de una base de acuerdo a unos criterios dados, pero a su vez, necesito actualizar un campo en donde indique el tipo de incidencia que presenta, por ejemplo de 10 columnas, 1 registros son iguales hasta la columna 7, luego los 3 ultimos son diferentes, en ese caso que me actualize un campo por ejemplo con 'incidencia 1'.

estuve tratando de realizarlo con este codigo, pero no respeta la regla y se actualiza toda mi tabla:
Código SQL:
Ver original
  1. DECLARE @pas1 VARCHAR(255)
  2. DECLARE @pas2 VARCHAR(255)
  3. DECLARE @NOMBRE VARCHAR(255)
  4. DECLARE @COUNT INT
  5. DECLARE @COUNTMAX INT
  6.  
  7. DROP TABLE #Lista
  8.  
  9. CREATE TABLE #Lista (serie INT IDENTITY(1,1), agente VARCHAR(255))
  10.  
  11. INSERT INTO #Lista (agente) SELECT DISTINCT nombre FROM INCIDENCIA_CTI
  12.  
  13. SET @COUNTMAX = (SELECT MAX(serie) FROM #Lista)
  14. SET @COUNT = 1
  15.  
  16. while (@COUNT <= @COUNTMAX )
  17. BEGIN
  18.  
  19. SET @NOMBRE = (SELECT agente FROM #Lista WHERE serie = @COUNT)
  20. SET @pas1 = (SELECT organizacion+id_empleado FROM INCIDENCIA_CTI WHERE nombre = @NOMBRE AND rn = '1')
  21. SET @pas2 = (SELECT organizacion+id_empleado FROM INCIDENCIA_CTI WHERE nombre = @NOMBRE AND rn = '2')
  22.  
  23. IF (@pas1 <> @pas2)
  24. BEGIN
  25. UPDATE INCIDENCIA_CTI SET tipo_incidencia = 'amarillo' WHERE nombre = @NOMBRE AND @pas1 <> @pas2
  26. END
  27.  
  28. SET @COUNT= @COUNT+1
  29. END

podrian indicarme que se esta haciendo mal...?? o alguna alternativa de solucion al caso...???
__________________
Lo que no se....tampoco creo saberlo....
  #2 (permalink)  
Antiguo 25/02/2014, 10:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Encontrar incidencias en base de duplicados

un ejemplo de tus datos y que necesitas ayudaria mas , porque con el puro codigo no puedo ver en donde esta tu error....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/02/2014, 10:09
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Encontrar incidencias en base de duplicados

claro libras, aqui va un ejemplo de 2 registros duplicados:
DESCRIPCION ENTIDAD NOMBRE TIPO DOC NUMERO DOC ESTADO PUESTO USUARIO FECHA CREACION CODIGO FUNCIONARIO CATEGORIA ENTIDAD OBSERVACIONES AGT_IDSRM PROGRAMA CARGO ORGANIZACION ID EMPLEADO FECHA INICIO ID INTERNO ORIGEN DATOS
PROGRAMA 1 *Bohorquez_Pulache_Juliana *DNI *47151313 *A OPERADOR *JBOHORQUE1 *28/08/2013 *1280 *AL05 *61100 NINGUNA *JBOHORQUE0 *Pgr Control *ASESOR *ALLUS Pgr Control *1264 *04/10/2013 *17106 *{{Anexos LV,1264,};{Anexos SB,1264,}}*
PROGRAMA 1 *Bohorquez_Pulache_Juliana *DNI *47151313 *A OPERADOR *JBOHORQUE1 *28/08/2013 *1280 *AL05 *61100 NINGUNA *JBOHORQUE0 *Pgr Control *ASESOR *GSS Pgr Prepago Masivo *2083 *27/03/2013 *13783 *{{Anexos LV,2083,};{Anexos SB,2083,}}*

como podras ver, los datos son iguales hasta la columna cargo, en adelante son distintos...

espero haberme dejado entender.....
__________________
Lo que no se....tampoco creo saberlo....
  #4 (permalink)  
Antiguo 25/02/2014, 10:13
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Encontrar incidencias en base de duplicados

creo las cabeceras no salieron bien, las envio corregidas:

DESCRIPCION_ENTIDAD NOMBRE TIPO_DOC NUMERO_DOC ESTADO PUESTO USUARIO FECHA_CREACION CODIGO_FUNCIONARIO CATEGORIA ENTIDAD OBSERVACIONES AGT_IDSRM PROGRAMA CARGO ORGANIZACION ID_EMPLEADO FECHA_INICIO ID_INTERNO ORIGEN_DATOS
__________________
Lo que no se....tampoco creo saberlo....
  #5 (permalink)  
Antiguo 25/02/2014, 10:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Encontrar incidencias en base de duplicados

Código SQL:
Ver original
  1. DECLARE @pas1 VARCHAR(255)
  2. DECLARE @pas2 VARCHAR(255)
  3. DECLARE @NOMBRE VARCHAR(255)
  4. DECLARE @COUNT INT
  5. DECLARE @COUNTMAX INT
  6.  
  7. DROP TABLE #Lista
  8.  
  9. CREATE TABLE #Lista (serie INT IDENTITY(1,1), agente VARCHAR(255))
  10.  
  11. INSERT INTO #Lista (agente) SELECT DISTINCT nombre FROM INCIDENCIA_CTI
  12.  
  13. SET @COUNTMAX = (SELECT MAX(serie) FROM #Lista)
  14. SET @COUNT = 1
  15.  
  16. while (@COUNT <= @COUNTMAX )
  17. BEGIN
  18.  
  19. SET @NOMBRE = (SELECT agente FROM #Lista WHERE serie = @COUNT)
  20. SET @pas1 = (SELECT organizacion+id_empleado FROM INCIDENCIA_CTI WHERE nombre = @NOMBRE AND rn = @COUNT)
  21. SET @pas2 = (SELECT organizacion+id_empleado FROM INCIDENCIA_CTI WHERE nombre = @NOMBRE AND rn = @COUNT+1)
  22.  
  23. IF (@pas1 <> @pas2)
  24. BEGIN
  25. UPDATE INCIDENCIA_CTI SET tipo_incidencia = 'amarillo' WHERE nombre = @NOMBRE AND (organizacion+id_empleado=@pas1)
  26. END
  27.  
  28. SET @COUNT= @COUNT+1
  29. END

prueba con eso :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 25/02/2014, 10:17
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Encontrar incidencias en base de duplicados

libras, funciona correctamente pero solo para un registro, sin embargo yo tengo 288 registros duplicados que en algunos casos presentan la incidencia que menciono, en ese caso como seria...??
__________________
Lo que no se....tampoco creo saberlo....
  #7 (permalink)  
Antiguo 25/02/2014, 10:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Encontrar incidencias en base de duplicados

tu lo que quieres es comparar contenido de cada columna y ver en donde esta la diferencia verdad??? eso se puede hacer pero tendrias que usar querys dinamicos.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 25/02/2014, 10:33
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Encontrar incidencias en base de duplicados

pues...como comentaba....tengo 288 registros duplicados, de los cuales hay datos iguales en 7 columnas, a partir de la 8 ya es diferente....en pocas palabras, quiero hacer que compare los datos de cada registro del total de registros de la tabla....y eso como se puede hacer...???
__________________
Lo que no se....tampoco creo saberlo....
  #9 (permalink)  
Antiguo 25/02/2014, 10:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Encontrar incidencias en base de duplicados

una pregunta, los duplicados estan juntos?? o pude haber uno en el primer registro y otro en el ultimo por ejemplo?? te dejo mi skype librasgan
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 25/02/2014, 10:53
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Encontrar incidencias en base de duplicados

en realidad, tengo 144 usuarios unicos, pero como se duplican tengo 288, es decir, un usuario se repite 2 veces ya que en los 3 ultimos campos son diferentes, no los agrupa como deberia...y si, solo se repiten 2 veces, mas no.... otra cosa, te envie un MP.... :)
__________________
Lo que no se....tampoco creo saberlo....

Etiquetas: campo, duplicados, encontrar, incidencias, registros, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:06.