SELECT FactoryName, JiJXH, shi, AVG(sale) AS sale_avg FROM tmp_apply WHERE (FactoryName, JiJXH) IN ( SELECT FactoryName, JiJXH ,SUM(ShuL) ShuL_total FROM tmp_apply GROUP BY FactoryName, JiJXH HAVING SUM(ShuL) > 500 ) GROUP BY FactoryName, JiJXH, shi;提示 [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]在应使用条件的上下文(在 ',' 附近)中指定了非布尔类型的表达式。 (4145) [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]关键字 'GROUP' 附近有语法错误。
时间: 2024-01-20 11:02:24 浏览: 58
angular_Factories_Services_Providers
根据错误提示,这个问题可能与你的 IN 子查询中的条件表达式有关,因为在逗号附近指定了非布尔类型的表达式。
尝试以下 SQL 语句,它使用 EXISTS 子查询代替了 IN 子查询。这样更加简洁和易于理解,同时可以避免上述错误。
```
SELECT FactoryName, JiJXH, shi, AVG(sale) AS sale_avg
FROM tmp_apply
WHERE EXISTS (
SELECT 1
FROM tmp_apply AS t
WHERE tmp_apply.FactoryName = t.FactoryName
AND tmp_apply.JiJXH = t.JiJXH
GROUP BY t.FactoryName, t.JiJXH
HAVING SUM(t.ShuL) > 500
)
GROUP BY FactoryName, JiJXH, shi;
```
这个修改后的 SQL 语句中,我使用 EXISTS 子查询来代替了 IN 子查询,并且在子查询中指定了需要查询的条件。同时,我也对 AVG 函数的结果添加了一个别名,使查询结果更具可读性。
阅读全文