我有这个查询:
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
答案 0 :(得分: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