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

如何获取并合并3份最新快照?SQL查询现有93份快照的疑问

获取并合并最新3份快照的SQL方案

你的现有代码其实没筛选出第93份快照(得加上WHERE CDP_DATE = @CDP_DATE_CURRENT才对)。要拿到最新的3份(也就是第91、92、93份,对应倒数三个最大的CDP_DATE),给你两种实用方法:

方法一:窗口函数法(推荐)

用DENSE_RANK()给日期倒序排名,直接筛选排名前3的数据:

WITH RankedSnapshots AS (
    SELECT 
        *,
        DENSE_RANK() OVER (ORDER BY CDP_DATE DESC) AS DateRank
    FROM [CD].[dbo].[abc]
)
SELECT *
FROM RankedSnapshots
WHERE DateRank <= 3;

如果每个日期对应唯一快照(无重复日期),换成ROW_NUMBER()也一样能用。

方法二:先取日期再筛选

先查出最新的3个日期,再关联原表取对应数据:

SELECT *
FROM [CD].[dbo].[abc]
WHERE CDP_DATE IN (
    SELECT DISTINCT TOP 3 CDP_DATE
    FROM [CD].[dbo].[abc]
    ORDER BY CDP_DATE DESC
);

要是担心子查询性能,也可以把前3个日期存到临时表再关联,逻辑完全一致。

小提醒

  • 如果CDP_DATE是日期/时间类型,别用VARCHAR定义变量,改成DATE或DATETIME更稳妥,避免字符串排序出问题。
  • 确认CDP_DATE的倒序排序逻辑正确,确保前3个结果就是你要的最新快照。

内容的提问来源于stack exchange,提问作者Edlynn's Mumny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:04