Query之后向我返回具有column多个值的数据FM.FaultIDMSTR
,我想消除重复并只取一个值并沿该值显示其他数据。
Select TOP 1000
FH.AtmKey,F.FAULTDESC,FH.FAULTSTARTTIME,FH.FAULTENDTIME,FM.FaultIDMSTR
From FAULTS_HISTORY FH, FAULTDEFS F, FAULTMAP FM
where FH.FaultID = F.FAULTID
and F.FAULTID = FM.FaultID
and FH.AtmKey in ('11487676154140993')
消除重复项的条件将基于column得出的较大值FH.FAULTSTARTTIME
。
我不确定如何通过适当的多个联接来实现这种分组级别,这是我的查询
您可以像这样使用排名功能 ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...
:
WITH CTE
AS
(
Select TOP 1000
FH.AtmKey,
F.FAULTDESC,
FH.FAULTSTARTTIME,
FH.FAULTENDTIME,
FM.FaultIDMSTR,
ROW_NUMBER() OVER(PARTITION BY FM.FaultIDMSTR
ORDER BY FH.FAULTSTARTTIME DESC) AS RN
From FAULTS_HISTORY FH
INNER JOIN FAULTDEFS F ON FH.FaultID = F.FAULTID
INNER JOIN FAULTMAP FM ON F.FAULTID = FM.FaultID
where FH.AtmKey in ('11487676154140993')
)
SELECT
AtmKey,
AULTDESC,
FAULTSTARTTIME,
FAULTENDTIME,
FaultIDMSTR
FROM CTE
WHERE RN = 1;
这会给你的行最大的FH.FAULTSTARTTIME
每一个FM.FaultIDMSTR
,如果你想按另一列把它在PARTITION BY
列。
请注意:尝试避免使用旧JOIN
语法,而使用ANSI-92语法,请参见:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句