Oracle按日期选择最新值

时间:2017-06-01 08:57:05

标签: sql oracle greatest-n-per-group

我有许多数据库记录,用于相隔数周的实验,通常间隔约2-3周。目标是按日期选择最新结果以生成报告。这是一个示例数据集。对于此数据集,目标是选择最后一行,因为它是deleteXml() QL_ID的最新测量值。

P14404是主键,QL_ID是样本的度量值,QL_VAL是测量的日期。表名为MEASUREMENT_DATE。我可以使用下面的查询获取最新日期和QL_RESULTS,但我仍然坚持如何获取所有3列,即QL_ID

QL_VAL,QL_ID,MEASUREMENT_DATE
SELECT QL_ID,MAX(MEASUREMENT_DATE) FROM QL_RESULTS
GROUP BY QL_ID

2 个答案:

答案 0 :(得分:0)

根据测量日期,您可以rankql_id行:

SELECT ql_val, ql_id, measurement_date
FROM   (SELECT ql_val, ql_id, measurement_date,
               RANK() OVER (PARTITION BY ql_id
                            ORDER BY measurement_date DESC) AS rk 
        FROM   ql_results) t
WHERE  rk = 1

答案 1 :(得分:0)

我认为苗条的解决方案就是这个:

SELECT QL_ID, MAX(MEASUREMENT_DATE), 
   MAX(QL_VAL) KEEP (DENSE_RANK LAST ORDER BY MEASUREMENT_DATE) as QL_VAL
FROM QL_RESULTS
GROUP BY QL_ID;