2013-04-27 31 views
1

enter image description hereenter image description here我在试图做的是创建一个SELECT语句,在滚动的30分钟窗口内搜索重复的单元格值。从记录发送给DBA团队的每个警报的表格中。创建查询语句在ROLLING时间间隔内输出记录

这是我的。

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分钟内发生如何输出警报有什么建议?

Proof of Alerts populating table: CST

图像#2显示记录在最后1分钟CST

回答

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

我只是举个例子。请尝试更新的答案。 – Devart 2013-04-27 09:48:01

+0

谢谢,但没有运气。该表仍然返回空白。我甚至改变了您的查询的一部分,包括: WHERE AlertDateTime> = @AlertDateTime AND Skipflag = 'E' 和Skipflag = 'O' 和Skipflag = 'N' 和Skipflag = 'NULL' 和Skipflag !='Y'我开始认为这是不可能的。我已经2天了! – user2325964 2013-04-27 10:13:51

+1

对不起,但您的情况不一致。请尝试更新的答案。 – Devart 2013-04-27 10:19:38

0

在许多问题最后警告,是SkipFlag可空?

AND SendAlertLog.SkipFlag != 'Y' 

由于null != 'Y'是不正确的(但未知),这将会过滤掉所有行SkipFlagnull'Y'

+0

Devart包括如何在查询中包括输出NULLS一个伟大的小费。请查阅ISNULL功能。谢谢! – user2325964 2013-04-27 10:00:16