背景
在Navicat上运行给的参考例子报错:1054-Unknown column '*******' in 'field list
原因
表面原因是:找不到这个字段名
实际原因是:因为在SQL的子查询中,您不能在SELECT
列表中直接引用之前定义的别名。我们需要将这些计算放入一个子查询中,然后在外部查询中引用这些值。
后来经过询问是因为给的例子是Click House数据库的语句,Ch数据库支持在一个子查询中直接定义一个别名后使用,但是在ClickHouse数据库中,列没有在聚合函数下或不在GROUP BY
子句中。在ClickHouse中,当你使用聚合函数(如SUM
)时,所有不在聚合函数中的列必须包含在GROUP BY
子句中。
在你的查询中,alreadyResolve
、justResolve
、noResolve
、resolveAndPass
和wjjzzypValue
这些列都是从子查询中聚合得到的,因此它们不需要在最外层的GROUP BY
子句中再次出现。问题在于,这些列在最外层查询的CASE
表达式中被使用,而这个CASE
表达式是在外层查询的SELECT
列表中的,而不是在聚合函数内部。