--con distincteso era lo que faltaba utilizar era una funcion MIN()/MAX() para obtener el resultado esperado, ya habia conseguido la solucion a la primera parte del problema.
SELECT DISTINCT ON (campo1) * FROM prueba2;
--sin el distinct to
SELECT b.* FROM ( SELECT campo1, min(campo6) as campo6 FROM prueba2 GROUP BY campo1 ) a, prueba2 b WHERE a.campo1=b.campo1 AND a.campo6=b.campo6
La segunda parte es mas sencilla, eliminar los registros duplicados, esto lo consegui de la siguiente forma: creando una tabla temporal donde se registraran los datos unicos, luego se elimina los datos de la tabla principal y luego se vuelcan los datos de la tabla temporal a la principal como tabla temporal (en PostgreSQL):
CREATE TEMP TABLE temporal AS SELECT b.* FROM ( SELECT campo1, min(campo6) as campo6 FROM prueba2 GROUP BY campo1 ) a, prueba2 b WHERE a.campo1=b.campo1 AND a.campo6=b.campo6o sencillamente asi: (de esta forma funciona en PostgreSQL y SQL Server)
SELECT b.* INTO temporal FROM ( SELECT campo1, min(campo6) as campo6 FROM prueba2 GROUP BY campo1 ) a, prueba2 b WHERE a.campo1=b.campo1 AND a.campo6=b.campo6;luego eliminamos los datos (la funcion truncate tambien es soportada por sql server o almenos eso dicen los manuales)
TRUNCATE prueba2;y por ultimo
INSERT INTO prueba2 SELECT * FROM temporal;En postgreSQL creandose la tabla temporal no hubiera sido necesario eliminar la entidad, dado que esta desaparece cuando se termina la sesion, pero no siendo el caso para la sentencia INSERT [..] INTO [], entonces:
DROP TABLE temporal;Bueno aunque lo anterior no es el santo grial, es un truco para salir de apuros o para alguien que no conociera una forma de hacerlo, espero que a alguien le sirva, almenos a mi me sirvio.
2 comentarios:
MIL TRILLONES DE GRACIAS NO TE IMAGINA EN CUANTAS PAGINA HE NAVEGADO PARA ENCONTRAR LAS RESPUESTA, CUAL QUIER COSA EN QUE TE PUEDA AYUDAR ESTE ES MI E-MAIL: dreams9j@hotmail.com
Marcel Rojas
Took me time to read the whole article, the article is great but the comments bring more brainstorm ideas, thanks.
- Johnson
Publicar un comentario