sql - SQL查询,根据另一列最高值删除重复条目
问题描述
我正在从 SCOM SQL 服务器提取警报
我有一些关于警报重复的问题,因为每次警报状态发生变化(例如从新到确认),都会在数据库上创建一个具有相同 alert_id 的新条目。
所以我试图根据最高警报状态(0 表示新,100 确认,255 表示关闭)对这些警报 ID 进行重复数据删除。
前任:
row alert_id alert_timeraised ResolutionState
1 4B77E4A8-61F9-4696-A4C0-00076EDACCE7 2019-06-24 0
2 4B77E4A8-61F9-4696-A4C0-00076EDACCE7 2019-06-24 100
3 4B77E4A8-61F9-4696-A4C0-00076EDACCE7 2019-06-24 255
4 C6BF2104-767D-43E0-B356-000B30570312 2019-07-07 255
5 C6BF2104-767D-43E0-B356-000B30570312 2019-07-07 0
对于第 1 行和第 2 行(相同的 alert_id),我只想选择具有高“ResolutionState”值(255)的行
我试过的:
GROUP BY 语句(每次我得到不同的计数......)
SELECT UNIQUE(根本不工作)
WHERE with select
她是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
如果您对此有任何建议,非常感谢..
解决方案
推荐阅读
- google-drive-api - 如何访问应用程序数据文件夹中的所有文件
- python - lambda 什么时候开始捕获自由变量?
- python - 将导入的变量作为参数时,“os”包中的某些函数行为异常
- python - 有没有办法打印这个未显示的标签文本?
- php - 如何在 PHP 中正确调用 gmdate()?
- java - 启动对象非静态变量时,无法从静态上下文中引用它
- twilio - 适用于 Twilio 可编程视频服务器端的 SDK,即 REST API
- java - E/MediaRecording:外部存储访问错误
- python - 编写带有 X 和 Y 轴的 JSON 文件
- c# - 为什么 WPF XAML 前端在其他机器上看起来不同?