You need to enable JavaScript to run this app. 如何使用SQL查询每个有交易记录月份最后一日的对应交易数据
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQL查询每个有交易记录月份最后一日的对应交易数据

解决方案

你可以用窗口函数的方式实现需求,该写法兼容MySQL 8.0+、PostgreSQL、SQL Server、Oracle等所有支持窗口函数的主流数据库:

SELECT Year, Month, Amount
FROM (
    SELECT 
        Year,
        Month,
        Amount,
        -- 同年同月的记录按日期倒序排序,最大的日期序号为1
        ROW_NUMBER() OVER (PARTITION BY Year, Month ORDER BY Day DESC) AS rn
    FROM 你的表名
) t
WHERE rn = 1
ORDER BY Year, Month;

如果你用的是不支持窗口函数的低版本数据库(比如MySQL 5.x),可以用关联匹配的写法:

SELECT t1.Year, t1.Month, t1.Amount
FROM 你的表名 t1
INNER JOIN (
    -- 先查到每个月的最大交易日
    SELECT Year, Month, MAX(Day) AS max_day
    FROM 你的表名
    GROUP BY Year, Month
) t2 ON t1.Year = t2.Year AND t1.Month = t2.Month AND t1.Day = t2.max_day
ORDER BY t1.Year, t1.Month;

两种写法的逻辑都是先定位每个年月的最大日期,再匹配该日期对应的Amount值,最终输出结果和你要求的格式一致。

内容的提问来源于stack exchange,提问作者JustABeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 18:27:03