You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询InvoiceLog表中指定发票的最新日期行数据?

解决获取指定发票最新日期行数据的问题

表结构及数据

InvoiceStatusDateExplanation
44587102.03.2022Awaiting update
44587207.03.2022Processed

问题原因

你当前的SQL语句返回两条结果,是因为GROUP BY子句包含了Status和Explanation——这两个字段在两行数据中取值不同,导致分组后生成两个独立组,最终输出两条记录。

可行解决方案

方法1:窗口函数(推荐,支持MySQL 8+、PostgreSQL、SQL Server等)

利用ROW_NUMBER()按发票分组,日期倒序排序,取排序为1的行(即最新日期行):

SELECT Invoice, Status, Date, Explanation
FROM (
    SELECT 
        Invoice, 
        Status, 
        Date, 
        Explanation,
        ROW_NUMBER() OVER (PARTITION BY Invoice ORDER BY Date DESC) AS rn
    FROM InvoiceLog
    WHERE Invoice = 44587
) t
WHERE rn = 1;

方法2:子查询关联

先获取目标发票的最大日期,再关联原表匹配对应行:

SELECT d.Invoice, d.Status, d.Date, d.Explanation
FROM InvoiceLog d
JOIN (
    SELECT Invoice, MAX(Date) AS MaxDate
    FROM InvoiceLog
    WHERE Invoice = 44587
    GROUP BY Invoice
) t ON d.Invoice = t.Invoice AND d.Date = t.MaxDate
WHERE d.Invoice = 44587;

方法3:TOP 1筛选(适用于SQL Server、Access等)

直接按日期倒序排序后取第一行:

SELECT TOP 1 Invoice, Status, Date, Explanation
FROM InvoiceLog
WHERE Invoice = 44587
ORDER BY Date DESC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:55:31