如何获取最新值?
Posted
技术标签:
【中文标题】如何获取最新值?【英文标题】:How to get the latest value? 【发布时间】:2022-01-18 08:47:45 【问题描述】:我正在尝试编写一个查询,我只想获取最大(日期),并且我必须按其余信息(例如 job_ID、invoice、total_paid 和 payment_method)进行分组。
我无法按付款方式分组,因为逻辑上它不正确,还因为付款方式不同......而且,我不能在这里使用 listagg。
知道如何实现我的目标吗? 我快要结束了,但是付款方式导致代码中的一些错误...
提前谢谢你:)
【问题讨论】:
提供完整的 CREATE TABLE,一些示例数据作为 INSERT INTO(两个脚本都是代码格式的文本),并显示该数据的所需输出并带有详细说明。还要指定精确的 DBserver 版本。 不要在您的查询中包含付款方式。然后你不需要按它分组。如果您需要了解该特定行的付款方式,您可以使用另一个 SQL 查询来查询它。 您标记了 mysql 和 Snowflake,但它们并不相同。您的问题缺少很多信息,无法有效帮助其他人解决您的问题。请用更多信息更新您的问题。 【参考方案1】:对于任何带有qualify row_number() over()
的id
,您可以获得最大date
的行:
with data as (
select $1 id, $2 date, $3 value
from values (1, 1, 'a')
, (1, 2, 'b')
, (1, 3, 'c')
, (2, 1, 'e')
, (2, 2, 'f')
, (2, 3, 'g')
)
select *
from data
qualify row_number() over(partition by id order by date desc) = 1
;
如果这不是您想要的 - 您需要通过详细说明示例输入数据和所需结果来改进问题。
【讨论】:
以上是关于如何获取最新值?的主要内容,如果未能解决你的问题,请参考以下文章