SQL Server - ayuda con update

 
Vista:
sin imagen de perfil
Val: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ayuda con update

Publicado por JJ (26 intervenciones) el 12/02/2020 18:57:52
buenas tengo la siguiente tabla



cap1

y deseo realizar un update en el que tome el primer ID que registra una persona, con el objetivo que muestre algo
similar a esto:


cap3

no realizo el procedimiento normal de un update, debido a que son 48000 registros, y lo que se compara es que la persona tenga mismo nombre y misma fecha de nacimiento, por lo que no es opción ir registro por registro.

el select para identificar los registros que cumplen esa condición es:

1
2
3
4
5
6
7
8
9
10
SELECT
   T1.[ID]
  ,T1.[NOMBRE]
  ,T1.[FECHA_NACIMIENTO]
FROM PRUEBA T1
INNER JOIN (SELECT [NOMBRE], [ID],[FECHA_NACIMIENTO]  FROM PRUEBA ) AS T2 ON
T1.[ID]=T1.[ID]
WHERE T1.[ID]<>T2.[ID]
AND (T1.[NOMBRE]=T2.[NOMBRE] AND T1.[FECHA_NACIMIENTO] = T2.[FECHA_NACIMIENTO])
order by [NOMBRE]

desde ya, agradezco la ayuda que me puedan brindar...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

ayuda con update

Publicado por Isaias (4558 intervenciones) el 12/02/2020 22:41:13
¿Es SQL Server?, ¿Que version - edicion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ayuda con update

Publicado por JJ (26 intervenciones) el 13/02/2020 02:22:13
Sql Server 2008 r2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

ayuda con update

Publicado por Isaias (4558 intervenciones) el 14/02/2020 20:20:27
Hice esta prueba, con la nota que debe haber dos NOMBRES iguales, si pasa que hay mas de 2 nombres iguales, tal no creo que te de el mismo resultado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE TABLE #MyTableUpdate (id varchar(30), Nombre varchar(30), Fecha_Nacmiento date)
INSERT INTO #MyTableUpdate VALUES(
'11111', 'JOSE', '20191011'),
('12345', 'JOSE', '20191011'),
('85678', 'DAVID', '19351113'),
('123456', 'DAVID', '19351113'),
('123456', 'MIGUEL', '19351113'),
('765890345', 'MIGUEL', '19351113')
 
SELECT * FROM  #MyTableUpdate
 
UPDATE #MyTableUpdate SET ID = T3.ID
FROM
(SELECT
  T1.[ID]
  ,T1.[NOMBRE]
  ,T1.[Fecha_Nacmiento]
  ,ROW_NUMBER() OVER(PARTITION BY t1.[NOMBRE]ORDER BY t1.[NOMBRE] DESC) rn
FROM #MyTableUpdate T1
INNER JOIN (SELECT [NOMBRE], [ID],[Fecha_Nacmiento] FROM #MyTableUpdate) AS T2 ON
T1.[ID] = T1.[ID]
WHERE T1.[ID] <> T2.[ID]
AND (T1.[NOMBRE] = T2.[NOMBRE])
--order by [NOMBRE])
) T3
WHERE T3.Nombre = #MyTableUpdate.Nombre
AND T3.rn = 2
 
SELECT * FROM  #MyTableUpdate
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar