2012-04-10 24 views
0

で重複値から最初のレコードを選択します。私はこのクエリを持っている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 

その結果、私に重複値を与える:

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           

私はそれぞれからのみもみのレコードを取得するにはどうすればよいです(DFC_NOMBRE_CAMPO)グループ。このように:

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 

答えて

2

これを試してみてください:

; 
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優秀を!ただ、唯一のJOIN MEM_DEFINICIONES_CAMPOS FROM ( \t SELECT DFC_NOMBRE_CAMPO、DFC_TITULO、TDT_DATO_MOTOR、DFC_LONGITUD、 \t ROW_NUMBER())DFC_NOMBRE_CAMPO ORDER BY DFC_NOMBRE_CAMPOのASC BY PARTITION(OVER Rnの \t FROM – Equiman

+0

SELECT DFC_NOMBRE_CAMPO、DFC_TITULO、TDT_DATO_MOTOR、DFC_LONGITUDを修正minnorが必要MEM_TIPOS_DATOS ON DFC_TDT_CODIGO = TDT_CODIGO \t WHERE DFC_ALMACENAR_BASEDATOS = 'S' )AS CTE WHERE Rn = 1 – Equiman

関連する問題