2012-04-10 7 views
0

ich diese Frage habe:erste Datensatz Wählen Sie aus dupliziert Werten in SQL Server

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 

und das Ergebnis, gib mir duplizierten Werte:

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           

Wie ich von jedem nur die Tannen Datensatz erhalten (DFC_NOMBRE_CAMPO) Gruppe. Wie folgt aus:

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 

Antwort

2

Versuchen Sie folgendes:

; 
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 
+0

WOW Excelent !!! Nur müssen nur eine minnor fix – Equiman

+0

SELECT DFC_NOMBRE_CAMPO, DFC_TITULO, TDT_DATO_MOTOR, DFC_LONGITUD VON ( \t SELECT DFC_NOMBRE_CAMPO, DFC_TITULO, TDT_DATO_MOTOR, DFC_LONGITUD, \t ROW_NUMBER() OVER (PARTITION BY DFC_NOMBRE_CAMPO ORDER BY DFC_NOMBRE_CAMPO ASC) Rn \t VON MEM_DEFINICIONES_CAMPOS JOIN MEM_TIPOS_DATOS ON DFC_TDT_CODIGO = TDT_CODIGO \t WHERE DFC_ALMACENAR_BASEDATOS = 'S' ) AS CTE WHERE Rn = 1 – Equiman