SQL - Borrar duplicados en una tabla

 
Vista:
sin imagen de perfil

Borrar duplicados en una tabla

Publicado por Álvaro (1 intervención) el 25/05/2022 15:57:45
Buenas a todos, tengo una tabla de la siguiente manera (imagen izquierda):

Captura

Necesito que pase a ser como la imagen de la derecha. En el momento que el código del recibo aparezca duplicado, tiene que poner un campo de esa fila a null o 0 (Coste) mientras que mantenga esa fila con otros campos (Coste origen). El resultado se ve bien en la imagen adjunta.

¿Cómo sería la parte de código a introducir? Muchisimas gracias.
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: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Borrar duplicados en una tabla

Publicado por Isaias (1921 intervenciones) el 31/05/2022 03:00:34
¿En SQL Server?

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
30
31
32
33
34
35
36
37
38
39
40
CREATE TABLE #temp
(
code int,
iencucod int,
duracion int
)
 
INSERT INTO #temp values (1,2999,1062)
INSERT INTO #temp values (1,2999,1062)
INSERT INTO #temp values (1,2999,1062)
INSERT INTO #temp values (1,2999,1062)
INSERT INTO #temp values (1,2999,1062)
INSERT INTO #temp values (1,2999,1062)
INSERT INTO #temp values (2,2999,610)
INSERT INTO #temp values (3,2999,34)
INSERT INTO #temp values (4,6170,447)
INSERT INTO #temp values (5,15729,1148)
INSERT INTO #temp values (6,15729,241)
INSERT INTO #temp values (6,15729,241)
INSERT INTO #temp values (6,15729,241)
INSERT INTO #temp values (7,15729,53)
INSERT INTO #temp values (8,38314,1029)
INSERT INTO #temp values (8,38314,1029)
INSERT INTO #temp values (8,38314,1029)
INSERT INTO #temp values (9,38314,256)
 
select * from #temp
 
 
WITH CTE (code, iencucod, duracion, DuplicateCount)
AS
(
SELECT code,iencucod, duracion,
ROW_NUMBER() OVER(PARTITION BY code, iencucod, duracion ORDER BY code,iencucod, duracion) AS DuplicateCount
FROM #temp
)
DELETE
FROM CTE
WHERE DuplicateCount > 1
GO
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