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

如何在SQL日志查询中仅返回各位置-物品的最新计数记录?

解决同一位置物品仅保留最新计数记录的问题

原查询会返回指定日期内同一LOCATION和ITEM的所有计数记录,但只有最新的QuantityCalc值是准确的,导致主查询SUM计算出现偏差。可以通过**窗口函数ROW_NUMBER()**实现仅保留每组最新条目的需求,修改后的查询如下:

WITH RankedLogs AS (
    SELECT 
        LOCATION, 
        ITEM,
        SUM(CASE 
            WHEN ACTION = 'COUNT-OK' 
            THEN QUANTITY 
            ELSE QUANTITY * CHANGE -- ACTION非OK时调整数量
        END) AS QuantityCalc,
        DATE_TIME,
        -- 按位置和物品分组,每组内按时间倒序排名
        ROW_NUMBER() OVER (PARTITION BY LOCATION, ITEM ORDER BY DATE_TIME DESC) AS RowNum
    FROM LOG_TABLE
    WHERE ACTION IN ('COUNT-ADJ','COUNT-OK')
      AND CAST(DATE_TIME AS DATE) = @CountDate
    GROUP BY LOCATION, ITEM, DATE_TIME
)
SELECT LOCATION, ITEM, QuantityCalc, DATE_TIME
FROM RankedLogs
WHERE RowNum = 1 -- 仅保留每组的第一条(最新记录)
ORDER BY DATE_TIME DESC;

核心逻辑说明:

  • 用CTERankedLogs对原查询结果做分组排名:PARTITION BY LOCATION, ITEM将数据按位置+物品组合拆分,ORDER BY DATE_TIME DESC让每组内最新的记录排第1位
  • 最后筛选RowNum = 1的记录,直接得到每个LOCATION+ITEM组合的最新准确计数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:05:30