我认为可行的是:
SELECT *
FROM customer_sale
WHERE sale_date < '2019-01-01'
GROUP BY customer_id
HAVING sale_date = MAX(sale_date)
但是运行此操作会导致错误
HAVING子句表达式引用列
sale_date
,该列是既不分组也不聚合
在Spanner中还有另一种方法可以实现这一目标吗?而且更普遍的是,为什么不允许上述内容?
SQL中的HAVING子句指定应使用SQL SELECT语句仅返回合计值满足指定条件的行。它被添加到SQL语言中,因为WHERE关键字不能与aggregate functions一起使用>
您需要在SELECT语句中包括GROUP BY中使用的列。您可以尝试:
SELECT customer_id, MAX(sale_date)
FROM customer_sale
WHERE sale_date < '2019-01-01'
GROUP BY customer_id