使用子查询左连接两张表时遭遇语法错误求助
问题分析与解决
可见语法错误修正
你给出的SQL片段存在两个直接导致Msg 156错误的问题:
- SELECT列表最后一列
SUM(B.QUANTITY) AS QUANTITY末尾多了一个逗号,SQL不允许列定义以逗号结尾,必须删除该逗号; - 子查询中引用的表名
Table是SQL保留关键字,需要用方括号[Table]包裹,避免语法冲突。
另外,使用SUM聚合函数时,非聚合列[SEASON]必须出现在GROUP BY子句中,否则会触发新的语法错误。修正后的基础SQL片段如下:
SELECT [SEASON], SUM(B.QUANTITY) AS QUANTITY FROM (SELECT QUANTITY, WAREHOUSE, CASE SUBSTRING(sku, 3, 1) WHEN '1' THEN 'SS' ELSE 'FW' END + SUBSTRING(sku, 1, 2) [SEASON] FROM [Table] ) B GROUP BY [SEASON]
关于'Msg 102, Level 15, State 1, Line 36: 'PM' 附近有语法错误'
当前提供的SQL片段未出现'PM',推测该错误来自你未贴出的左连接部分代码,常见原因包括:
- 'PM'作为表名/别名时,是拼写错误或未用方括号包裹的SQL保留关键字;
- 左连接语句存在语法缺陷,比如遗漏
ON关键字、括号不匹配、多余逗号; - 涉及'PM'的表达式存在错误,比如函数调用格式不对、字符串拼接符号使用不当。
需要检查第36行附近包含'PM'的代码段,确保语法符合SQL规范。
内容的提问来源于stack exchange,提问作者Youssi
相关产品推荐
相关产品推荐

