如何获得最大的行?

问题描述 投票:0回答:1

我认为可行的是:

SELECT *
FROM customer_sale
WHERE sale_date < '2019-01-01'
GROUP BY customer_id
HAVING sale_date = MAX(sale_date)

但是运行此操作会导致错误

HAVING子句表达式引用列sale_date,该列是既不分组也不聚合

在Spanner中还有另一种方法可以实现这一目标吗?而且更普遍的是,为什么不允许上述内容?

google-cloud-spanner
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.