SQL Server - SELECT DISTINCT SQL SERVER

 
Vista:
Imágen de perfil de Jesus Manuel

SELECT DISTINCT SQL SERVER

Publicado por Jesus Manuel (5 intervenciones) el 29/11/2017 18:28:19
Hola, buen dia! Estoy haciendo una consulta en SQL SERVER para poder crear una tabla temporal para poder sacar las filas repetidas y poder eliminarlas de mi base de datos, pero algo sale mal en mi consulta, alguien me podra ayudar?

SELECT DISTINCT *
INTO Duplicado //AQUI MARCA EL ERROR
FROM Caracteristica
GROUP BY nombreArchivo
HAVING COUNT(nombreArchivo) > 1

EL ERROR DICE LO SIGUIENTE:
Column 'Caracteristica.idCaracteristica' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Gracias grupo! :)
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

SELECT DISTINCT SQL SERVER

Publicado por jams (93 intervenciones) el 01/12/2017 18:23:43
Buenos días para saber que tienes registros duplicados

simplemente con esto

select nombreArchivo,count(*) from caracteristica group by nombreArchivo having count(*) > 1

una ves que ya sabes que si hay duplicados borralos adecuando el siguiente script que usa common table expresion y es muy eficiente

1
2
3
4
5
6
7
8
9
10
WITH borrar (idempleado,nombre, DuplicateCount)
 AS
 (
 SELECT idempleado,nombre,
 ROW_NUMBER() OVER(PARTITION BY idempleado,nombre ORDER BY idempleado) AS DuplicateCount
 FROM @empleados
 )
 DELETE
 FROM borrar
 WHERE DuplicateCount > 1

NOTA el script debe ser adecuado a tus campos y tablas

ojala te sirva

Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jesus Manuel

SELECT DISTINCT SQL SERVER

Publicado por Jesus Manuel (5 intervenciones) el 04/12/2017 16:14:48
Hola! Muchas gracias amigo por la ayuda, si me muestra los valores repetidos, pero no me lo elimina, segun esto es el scrip ya adecuado a mis tablas y datos, pero me marca error en las partes nebras del texto, crees saber a que se deba el error?

WITH borrar (nombreArchivo ,DuplicateCount)
AS
( SELECT nombreArchivo
ROW_NUMBER() OVER(PARTITION BY nombreArchivo ORDER BY nombreArchivo) AS DuplicateCount FROM Caracteristica)
DELETE
FROM borrar
WHERE DuplicateCount > 1

de antemano, muchas gracias! :D
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

SELECT DISTINCT SQL SERVER

Publicado por Isaias (4558 intervenciones) el 04/12/2017 17:10:12
¿Cual es el error?, yo siempre he dicho que la adivinanza no es mi fuerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jesus Manuel

SELECT DISTINCT SQL SERVER

Publicado por Jesus Manuel (5 intervenciones) el 04/12/2017 17:32:27
Hola Isaias! Buen dia! hehe ya quedo resuelto el error, muchas gracias!
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

SELECT DISTINCT SQL SERVER

Publicado por Isaias (4558 intervenciones) el 04/12/2017 17:39:49
Pues de que, pero deberias compartir tu solucion para la comunidad, no es un regla, pero podria servirle a alguien mas, Saludos
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 Jesus Manuel

SELECT DISTINCT SQL SERVER

Publicado por Jesus Manuel (5 intervenciones) el 04/12/2017 17:46:57
Ah ok! Solo me faltaba una coma en la línea del SELECT....

1
2
3
4
5
6
7
8
9
select nombreArchivo,count(*) from caracteristica group by nombreArchivo having count(*) > 1
 
WITH borrar (nombreArchivo,  DuplicateCount)
 AS
( SELECT nombreArchivo,
 ROW_NUMBER() OVER(PARTITION BY nombreArchivo ORDER BY nombreArchivo) AS DuplicateCount  FROM Caracteristica
 DELETE
 FROM borrar
 WHERE DuplicateCount > 1

como siempre, las comas y cierre de llaves nos afectan mucho! Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar