问题描述
我需要一个查询来显示最大日期/年份的最后一个日期之后的值(saldo),但是我已经尝试过,但是它始终显示从第一个日期开始的值。
这是我的查询:
SELECT saldo,MAX(tgl_lap) FROM laporan GROUP BY DATE_FORMAT(tgl_lap,'%Y','%m') ORDER BY DATE_FORMAT(tgl_lap,'%m') DESC
我的结果:
我的预期结果应该仅显示如下红色框中的值:
解决方法
WITH cte AS (
SELECT *,ROW_NUMBER() OVER (PARTITION BY YEAR(tgl_lap) ORDER BY tgl_lap DESC) rn
FROM laporan
)
SELECT *
FROM cte
WHERE rn = 1
,
select *
From laporan t
where t.tgl_lap =
(
select max(a.tgl_lap)
from laporan a
where year(t.tgl_lap) = year(a.tgl_lap)
)
根据样本数据,考虑到每个日期只有一条记录,子查询将返回年份的最大日期,主查询将返回年份的最后或最大日期的完整记录。