-1

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

这是我的查询:

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

我的结果:

在此处输入图像描述

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

在此处输入图像描述

4

2 回答 2

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

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

于 2020-10-06T19:48:25.910 回答
0
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
于 2020-10-06T19:24:39.437 回答