Estoy trabajando en un paquete SSIS donde estoy importando datos de un archivo CSV a una tabla SQL.
El único campo que me preocupa es el nombre de usuario. Este nombre de usuario debe ser único. No me importa si el nombre o el apellido son iguales o no.
En el paquete, importé los datos del archivo a una tabla SQL temporal. Y luego usé SELECT DISTINCT para elegir un nombre de usuario único. Y luego inserte en la tabla de destino.
El problema es: cuando hago un SELECT DISTINCT Username, Firstname and Lastname FROM tempUsers.
Vuelve:
- JSmith, Juan, Smith
- JSmith, Joe, inteligente
- MBopp, Mary, Boppins
Pero quiero que vuelva:
- JSmith, Juan, Smith
- MBopp, Mary, Boppins
Solución del problema
SELECT DISTINCT
seleccionará todas las filas distintas para cada columna que especifique, por lo que no es exactamente lo que está buscando.
Si su tipo de SQL lo admite, intente GROUP BY
con FIRST()
, como el siguiente. Devolverá el primer registro para cada nombre de usuario individual.
SELECT Username, FIRST(Firstname), FIRST(Lastname)
FROM tempUsers
GROUP BY Username
De lo contrario, debe hacerlo de la manera difícil usando una ID de fila y subseleccionando:
SELECT Username, FIRST(Firstname), FIRST(Lastname)
FROM tempUsers
WHERE RowID IN (SELECT MIN(RowID)
FROM tempUsers
GROUP BY Username)
** No debe usar MIN con Firstname y Lastname, porque no puede garantizar que provengan de la misma fila:
SELECT Username, MIN(Firstname), MIN(Lastname)
FROM tempUsers
GROUP BY Username
No hay comentarios:
Publicar un comentario