首页 > 解决方案 > SQL查询从数据中获取最新价格?

问题描述

我的 Oracle 表中有这些数据:

在此处输入图像描述

product_id在此表中,我有多种产品在特定时间具有和价格。

我想编写一个 SQL 查询来根据TIME列(Oracle - Long Type)获取每种产品的最新价格。

但问题出在这里,因为我们对产品的表价监控从前一天的 23:00 开始。

需要输出:当我将 2-Dec-2019 作为参数传递给 SQL 查询时

在此处输入图像描述

如何使用 SQL 查询来做到这一点?或者我是否需要根据 if 和 else 条件为其编写存储过程?

提前致谢。

标签: sqloraclefunctioncase

解决方案


我们可以尝试使用ROW_NUMBER这个要求:

WITH cte AS (
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY time DESC) rn
    FROM yourTable t
    WHERE system_date = date '2019-12-19'
)

SELECT local_date, system_date, currency, product_id, time, current_price
FROM cte
WHERE rn = 1;

推荐阅读