Question

I have this Query:

Select DFC_NOMBRE_CAMPO, DFC_TITULO, TDT_DATO_MOTOR, DFC_LONGITUD
FROM MEM_DEFINICIONES_CAMPOS JOIN MEM_TIPOS_DATOS ON DFC_TDT_CODIGO = TDT_CODIGO 
WHERE DFC_ALMACENAR_BASEDATOS = 'S'
ORDER BY DFC_NOMBRE_CAMPO ASC, DFC_LONGITUD DESC

And the Result, give me duplicated values:

DFC_NOMBRE_CAMPO                                   DFC_TITULO                                         TDT_DATO_MOTOR       DFC_LONGITUD
-------------------------------------------------- -------------------------------------------------- -------------------- ---------------------------------------
CodigoRespuesta                                    Cod. Respuesta                                     Varchar              3
CodigoRespuesta                                    Cod. Resp.                                         Numeric              3
CodigoRespuesta                                    Cod Respuesta                                      Numeric              3
CodigoTransaccion                                  NULL                                               Numeric              2
CodigoTransaccion                                  Codigo Transaccion                                 Numeric              2
CodigoTransaccion                                  Codigo Transaccion                                 Numeric              2
Estado                                             Estado                                             Numeric              2
FechaHora                                          Fecha                                              Varchar              14
FechaHora                                          Fecha                                              Varchar              14
FechaHora                                          Fecha                                              Varchar              14
NUT                                                NUT                                                Numeric              9
NUT                                                NUT                                                Numeric              8
NUT                                                NUT                                                Numeric              8                                           

How I can obtain only the firs record from each (DFC_NOMBRE_CAMPO) group. Like This:

DFC_NOMBRE_CAMPO                                   DFC_TITULO                                         TDT_DATO_MOTOR       DFC_LONGITUD
-------------------------------------------------- -------------------------------------------------- -------------------- ---------------------------------------
CodigoRespuesta                                    Cod. Respuesta                                     Varchar              3
Estado                                             Estado                                             Numeric              2
FechaHora                                          Fecha                                              Varchar              14
NUT                                                NUT                                                Numeric              9
Was it helpful?

Solution

Try this:

;
WITH CTE AS
     (
         SELECT DFC_NOMBRE_CAMPO,
                DFC_TITULO,
                TDT_DATO_MOTOR,
                DFC_LONGITUD,
                ROW_NUMBER() OVER(
                    PARTITION BY DFC_NOMBRE_CAMPO ORDER BY DFC_NOMBRE_CAMPO ASC,
                    DFC_LONGITUD DESC
                ) Rn
         FROM   MEM_DEFINICIONES_CAMPOS
                JOIN MEM_TIPOS_DATOS
                     ON  DFC_TDT_CODIGO = TDT_CODIGO
         WHERE  DFC_ALMACENAR_BASEDATOS = 'S'
     )

SELECT *
FROM   CTE
WHERE  Rn = 1
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top