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

SQL Server:如何查询Document表中Count值最后一次变更的最新行?

解决SQL Server中仅返回Count值变更的最新行问题

没问题,针对你这个需求,我给你写个SQL Server的查询语句,刚好能搞定——只返回Count值发生变更的最新行。

先明确你的表结构和现有数据:

IDDOC_IDCount
1221
2221
3222
4222
5222
6223

你的期望输出是最后一次Count变更的最新行:

IDDOC_IDCount
6223

实现SQL语句

WITH ChangedRows AS (
    SELECT 
        ID, DOC_ID, Count,
        -- 获取当前行的上一行Count值,按DOC_ID分组、ID排序
        LAG(Count) OVER (PARTITION BY DOC_ID ORDER BY ID) AS PreviousCount
    FROM Document
)
SELECT ID, DOC_ID, Count
FROM ChangedRows
-- 筛选出Count发生变更的行(包括第一行,因为它没有上一行)
WHERE (PreviousCount IS NULL OR PreviousCount != Count)
-- 按ID倒序,取最新的那一行
ORDER BY ID DESC
OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY;

代码逻辑说明

  1. 用LAG()窗口函数,按DOC_ID分组、ID排序,获取每一行的上一行Count值,命名为PreviousCount。
  2. 筛选出PreviousCount为空(也就是分组内的第一行)或者PreviousCount和当前行Count不相等的行,这些就是Count发生变更的行。
  3. 把这些变更行按ID倒序排列,用OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY取第一行,就是你要的最新变更行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:35:40