运行SQL时报错“关键字'AS'附近语法不正确”,是什么原因导致的?
语法错误定位
你这段SQL的错误来自两个书写疏漏:
- 子查询中
InResult IN的取值列表末尾多写了1个多余的右括号,原本仅需1个括号闭合IN列表,当前写了2个连续右括号,破坏了子查询的语句结构。 - 子查询取别名
AS Sub后多写了1个多余的逗号,你当前FROM子句仅引用了一个子查询作为数据源,不需要逗号分隔多个数据源,多余的逗号会导致解析器误判后续WHERE关键字的位置,触发AS附近语法报错。
修复后完整代码
USE VHT_RPT SELECT [QueueName] AS QueueName, Interval, CONVERT(VARCHAR(20), Interval, 103) AS DATEPART, CONVERT(VARCHAR(20), Interval, 108) AS TIMEPART, COUNT(CALLID) AS Callbacks FROM (SELECT [QueueName] AS QueueName, DATEADD(MINUTE, DATEDIFF(HOUR, '1970-01-01', InTimestart) * 60 + FLOOR(DATEPART(MINUTE, InTimeStart) / 15) * 15, '1970-01-01') AS Interval, CALLID FROM QDump WHERE InResult IN ('I2', -- ASAP callback 'I5', -- Scheduled callback 'I8', -- Web ASAP Callback 'I9', -- Web scheduled callback 'I18', -- Second Chance callback 'I25', -- After Hours scheduled callback 'I32', -- Virtual Queue ASAP callback 'I33' -- Date Book scheduled callback ) ) AS Sub WHERE interval BETWEEN '05/03/2021' AND '05/08/2021' -- Date Format is "MM-DD-YYYY" GROUP BY Interval, [QueueName] ORDER BY Interval
内容的提问来源于stack exchange,提问作者Sql_Wala
相关产品推荐
相关产品推荐

