2012-04-10 102 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外觀極好!僅僅只需要一個minnor修復 – Equiman 2012-04-10 22:17:23

+0

SELECT DFC_NOMBRE_CAMPO,DFC_TITULO,TDT_DATO_MOTOR,DFC_LONGITUD FROM ( \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)R \t FROM MEM_DEFINICIONES_CAMPOS JOIN MEM_TIPOS_DATOS ON DFC_TDT_CODIGO = TDT_CODIGO \t WHERE DFC_ALMACENAR_BASEDATOS ='S' )AS CTE 其中Rn = 1 – Equiman 2012-04-10 22:17:54

相關問題