我要做的是创建一个SELECT语句,在滚动的30分钟窗口内搜索重复的单元格值。从记录发送给DBA团队的每个警报的表中。
这就是我所拥有的。
USE db
GO
SET NOCOUNT ON
DECLARE @AlertDateTime smalldatetime
SELECT @AlertDateTime = getdate()
BEGIN
SELECT * FROM SendAlertLog
WHERE EXISTS
(
SELECT SendAlertLog.Event
FROM SendAlertLog
GROUP BY Event
HAVING COUNT (1) >= 2
)
AND SendAlertLog.SkipFlag != 'Y'
AND AlertDateTime >= dateadd (mi, -30, @AlertDateTime)
END
我的结果是一个包含所有列标题的空白表。但是有超过95,000个!
Blank Table results from at table of 95,000rows
有关如何输出过去30分钟内发生的警报的任何建议?
图像#2显示最近1分钟CST中记录的最后一次警报
答案 0 :(得分:1)
试试这个 -
DECLARE @AlertDateTime DATETIME
SELECT @AlertDateTime = DATEADD(mi, -30, GETDATE())
SELECT *
FROM dbo.SendAlertLog
WHERE AlertDateTime >= @AlertDateTime
AND ISNULL(Skipflag, 'E') IN ('E', 'O', 'N')
答案 1 :(得分:0)
在许多问题中,SkipFlag
可以为空吗?
AND SendAlertLog.SkipFlag != 'Y'
由于null != 'Y'
不正确(但未知),因此会过滤掉SkipFlag
为null
或'Y'
的所有行。