Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我的右括号是抛出错误_Sql_Sql Server - Fatal编程技术网

Sql 我的右括号是抛出错误

Sql 我的右括号是抛出错误,sql,sql-server,Sql,Sql Server,我正在尝试执行此查询,但一直收到错误消息 Msg 102, Level 15, State1 Incorrect syntax near ')'. 请你看一下我的问题好吗?我相信对于每个SQL关键字,我都添加了相应的括号 USE [db] GO SET NOCOUNT ON DECLARE @AlertDateTime date , @HostName varchar(50) , @Program varchar(100) , @Event varc

我正在尝试执行此查询,但一直收到错误消息

Msg 102, Level 15, State1
Incorrect syntax near ')'. 
请你看一下我的问题好吗?我相信对于每个SQL关键字,我都添加了相应的括号

USE [db]
GO

SET NOCOUNT ON

DECLARE @AlertDateTime date
      , @HostName  varchar(50)
      , @Program varchar(100)
      , @Event varchar(100)
      , @Entity varchar(50)
      , @Class tinyint
      , @Severity tinyint
      , @AlertMessage varchar(1024)
      , @SkipFlag char(1) 

select cast(getdate() as date)

IF EXISTS 

(SELECT * FROM SendAlertLog 

WHERE EXISTS
(
    SELECT SendAlertLog.Event  
    FROM SendAlertLog
    GROUP BY SendAlertLog.Event 
    HAVING COUNT (1) >= 2 
)
AND SendAlertLog.SkipFlag != 'Y' 
AND AlertDateTime <= DATEADD (mi,-30,@AlertDateTime)
)

我不知道我包括或排除了什么错误。请帮助

看起来您有一个if,但如果表达式为true,则没有要执行的语句。你有

IF EXISTS(...)
但是你需要

IF EXISTS(...)
   DO_SOMETHING

请在不重复使用SendAlertLog的情况下尝试此选项-

DECLARE @AlertDateTime DATE

IF EXISTS (
    SELECT 1 
    FROM (
        SELECT 
              cnt = COUNT(1)
            , SkipFlag = MAX(l.SkipFlag)
            , AlertDateTime = MAX(l.AlertDateTime)
        FROM dbo.SendAlertLog l
        GROUP BY l.[Event] 
    ) l
    WHERE cnt >= 2
        AND l.SkipFlag != 'Y' 
        AND l.AlertDateTime <= DATEADD(mi, -30, @AlertDateTime)
) BEGIN

    PRINT 'Do something'

END

你错过开始了吗。。。谢谢Satya,使用开始结束工作!非常感谢。mhasan和user12861。我删除了IF EXISTS并替换为BEGIN END。谢谢,但聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,正在聚合的列是一个外部引用:我对数据库领域非常陌生。这是消除查询编写中的冗余并用IF语句控制输出视图的一个好方法。