如何按最大日期/年份的最后日期显示值

问题描述

我需要一个查询显示最大日期/年份的最后一个日期之后的值(saldo),但是我已经尝试过,但是它始终显示从第一个日期开始的值。

这是我的查询

SELECT saldo,MAX(tgl_lap) FROM laporan GROUP BY DATE_FORMAT(tgl_lap,'%Y','%m') ORDER BY DATE_FORMAT(tgl_lap,'%m') DESC

我的结果:

enter image description here

我的预期结果应该仅显示如下红色框中的值:

enter image description here

解决方法

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)
)

根据样本数据,考虑到每个日期只有一条记录,子查询将返回年份的最大日期,主查询将返回年份的最后或最大日期的完整记录。