1

在此处输入图像描述在此处输入图像描述我试图做的是创建一个 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 行!

来自 95,000 行表的空白表结果

关于如何输出过去 30 分钟内发生的警报的任何建议?

警报证明填充表:CST

图片 #2 显示了在 CST 的最后 1 分钟内记录的最后一个警报

4

2 回答 2

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')  
于 2013-04-27T09:31:04.893 回答
0

在众多问题中,是否可以为SkipFlag空?

AND SendAlertLog.SkipFlag != 'Y' 

由于null != 'Y'不是真的(但未知),这将过滤掉所有行其中SkipFlagisnull'Y'

于 2013-04-27T09:24:30.177 回答