SQL查询,根据另一列的最高值删除重复项

SQL查询,根据另一列的最高值删除重复项,sql,sql-server,duplicates,Sql,Sql Server,Duplicates,我正在从SCOM SQL server提取警报 我对警报复制有一些问题,因为每次警报状态发生更改(例如,从“新建”更改为“确认”),都会在数据库上创建一个具有相同警报id的新条目 因此,我尝试根据最高警报状态(0表示新警报,100表示已确认警报,255表示已关闭警报)消除这些警报id的重复数据 例: 对于第1行和第2行(相同的警报\u id),我只想选择“ResolutionState”值较高(255)的行 我所尝试的: 按语句分组(每次我得到不同的计数… 选择唯一(完全不工作) 选择在哪里 她

我正在从SCOM SQL server提取警报

我对警报复制有一些问题,因为每次警报状态发生更改(例如,从“新建”更改为“确认”),都会在数据库上创建一个具有相同警报id的新条目

因此,我尝试根据最高警报状态(0表示新警报,100表示已确认警报,255表示已关闭警报)消除这些警报id的重复数据

例:

对于第1行和第2行(相同的警报\u id),我只想选择“ResolutionState”值较高(255)的行

我所尝试的:

按语句分组(每次我得到不同的计数…
选择唯一(完全不工作)
选择在哪里

她的sql查询是:

SELECT

Alert.vAlert.AlertGuid AS 'alert_id',
Alert.vAlertResolutionState.StateSetDateTime AS 'alert_timeraised', 
ResolutionState

FROM

Alert.vAlertDetail WITH (NOLOCK) 
INNER JOIN Alert.vAlert WITH (NOLOCK) ON Alert.vAlertDetail.AlertGuid = Alert.vAlert.AlertGuid 
INNER JOIN Alert.vAlertResolutionState ON Alert.vAlert.AlertGuid = Alert.vAlertResolutionState.AlertGuid

GROUP BY 
Alert.vAlert.AlertGuid,
Alert.vAlertResolutionState.StateSetDateTime,
Alert.vAlertResolutionState.ResolutionState

UNION

SELECT
Alert.vAlert.AlertGuid,
CONVERT(VARCHAR(50), Alert.vAlertResolutionState.StateSetDateTime, 20),
ResolutionState

FROM
Alert.vAlertDetail WITH (NOLOCK) 
INNER JOIN Alert.vAlert WITH (NOLOCK) ON Alert.vAlertDetail.AlertGuid = Alert.vAlert.AlertGuid
INNER JOIN Alert.vAlertResolutionState ON Alert.vAlert.AlertGuid = Alert.vAlertResolutionState.AlertGuid

GROUP BY
Alert.vAlert.AlertGuid,
Alert.vAlertResolutionState.StateSetDateTime,
Alert.vAlertResolutionState.ResolutionState

ORDER BY alert_id asc

如果您对此有任何建议,非常感谢。

请不要回答“重复”,我暂时没有解决方案。,,我尝试了分组方式,子查询,其中。。。我不是SQL高手:(请不要回答“重复”,我暂时没有解决方案.,,我尝试过分组,子查询,其中…我不是SQL高手:(
SELECT

Alert.vAlert.AlertGuid AS 'alert_id',
Alert.vAlertResolutionState.StateSetDateTime AS 'alert_timeraised', 
ResolutionState

FROM

Alert.vAlertDetail WITH (NOLOCK) 
INNER JOIN Alert.vAlert WITH (NOLOCK) ON Alert.vAlertDetail.AlertGuid = Alert.vAlert.AlertGuid 
INNER JOIN Alert.vAlertResolutionState ON Alert.vAlert.AlertGuid = Alert.vAlertResolutionState.AlertGuid

GROUP BY 
Alert.vAlert.AlertGuid,
Alert.vAlertResolutionState.StateSetDateTime,
Alert.vAlertResolutionState.ResolutionState

UNION

SELECT
Alert.vAlert.AlertGuid,
CONVERT(VARCHAR(50), Alert.vAlertResolutionState.StateSetDateTime, 20),
ResolutionState

FROM
Alert.vAlertDetail WITH (NOLOCK) 
INNER JOIN Alert.vAlert WITH (NOLOCK) ON Alert.vAlertDetail.AlertGuid = Alert.vAlert.AlertGuid
INNER JOIN Alert.vAlertResolutionState ON Alert.vAlert.AlertGuid = Alert.vAlertResolutionState.AlertGuid

GROUP BY
Alert.vAlert.AlertGuid,
Alert.vAlertResolutionState.StateSetDateTime,
Alert.vAlertResolutionState.ResolutionState

ORDER BY alert_id asc