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

如何用SQL按日期排序获取发票的唯一流转路径列表

解决发票流转路径去重的SQL实现

假设你的数据集表名为invoice_flow,包含字段invoice(发票号)、dept(部门)、date(流转日期)。要实现按日期排序并去除连续相同部门的重复记录,可以用LAG()窗口函数对比当前记录与上一条记录的部门,过滤掉重复的连续部门记录,具体SQL如下:

WITH ranked_invoices AS (
    SELECT
        invoice,
        dept,
        date,
        -- 获取同一张发票的上一条记录的部门
        LAG(dept) OVER (PARTITION BY invoice ORDER BY date) AS prev_dept
    FROM invoice_flow
)
SELECT
    invoice,
    dept,
    date
FROM ranked_invoices
-- 过滤条件:要么是该发票的第一条记录,要么当前部门和上一条不同
WHERE prev_dept IS NULL OR dept != prev_dept
-- 最终按发票和日期排序输出
ORDER BY invoice, date;

逻辑说明

  • PARTITION BY invoice:按发票号分组,确保只对比同一张发票的流转记录
  • ORDER BY date:在每个发票组内按流转日期排序,保证流转顺序正确
  • LAG(dept):获取当前记录的上一条记录的部门值
  • 过滤条件prev_dept IS NULL OR dept != prev_dept:保留每个发票的第一条流转记录,以及部门发生变化的后续记录,自动剔除连续相同的部门记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:22:02