SQL语法错误求助:关键字'FROM'附近语法不正确(错误156)
SQL语法错误排查与解决
错误原因
关键字'FROM'附近语法不正确的核心问题是:在SELECT子句的聚合函数SUM后错误使用了WHERE关键字。WHERE仅用于全局筛选行数据,不能直接嵌入列的计算逻辑中。需要通过CASE WHEN实现条件聚合,筛选符合DocumentType条件的行进行求和。
修正后的SQL代码
USE Intranet DECLARE @StartDate date, @EndDate date SET @StartDate = '6/1/2023' SET @EndDate = '6/30/2023' SELECT a.CompanyID AS 'COID', a.LocationID AS 'Location', SUM(CASE WHEN a.DocumentType IN ('INInvoice', 'OEInvoice', 'WOInvoice') THEN (ISNULL(a.ShipQty, 0)) * (ISNULL(a.UnitPrice, 0)) ELSE 0 END) AS 'Original Sell Invoiced' FROM DF_OrderLine as a LEFT JOIN VibeNetProductClass as b ON b.CompanyID = a.CompanyID AND b.ProductClassID = a.ProductClassID WHERE CAST(a.InvoiceDate AS date) >= @StartDate AND CAST(a.InvoiceDate AS date) <= @EndDate GROUP BY a.CompanyID, a.LocationID
关键修改说明
- 替换原代码中
SUM(...) WHERE ...的错误写法,改用CASE WHEN判断DocumentType,仅对符合条件的行计算ShipQty * UnitPrice,不符合条件的返回0,再通过SUM完成聚合计算。 - 取消对
ELSE 0 END AS 'Original Sell Invoiced'的注释,确保列别名正确生效,让查询结果的列名清晰明确。
内容的提问来源于stack exchange,提问作者Julie
相关产品推荐
相关产品推荐

