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

SQL Server中按规则取两个不同字段日期计算天数差的实现方法

SQL Server 实现逻辑

基础实现(全局维度计算)

假设业务表中只有1条Cancel = 'Yes'的记录,直接用子查询分别取两个日期后计算差值即可:

-- 替换代码中「你的业务表名」为实际表名称
SELECT 
    DATEDIFF(
        DAY,
        -- 取全表Inception Date的最小值
        (SELECT MIN([Inception Date]) FROM 你的业务表名),
        -- 取Cancel为Yes的记录的Timestamp日期部分,多条时默认取最新的
        (SELECT CAST(MAX([Timestamp]) AS DATE) FROM 你的业务表名 WHERE Cancel = 'Yes')
    ) AS 两个日期的天数差

按产品分组实现(Product ID维度计算)

如果需要按不同产品分别计算每个产品的对应天数差,使用分组聚合逻辑即可:

SELECT 
    [Product ID] AS 产品ID,
    DATEDIFF(
        DAY,
        MIN([Inception Date]),
        CAST(MAX(CASE WHEN Cancel = 'Yes' THEN [Timestamp] END) AS DATE)
    ) AS 对应产品的天数差
FROM 你的业务表名
GROUP BY [Product ID]

注意事项

  • 若Cancel字段取值存在大小写差异,可将过滤条件调整为UPPER(Cancel) = 'YES'避免匹配遗漏
  • 若对应范围不存在Cancel = 'Yes'的记录,计算结果会返回NULL,可通过ISNULL(计算逻辑, 自定义缺省值)处理异常值
  • 3000行的数据量非常小,上述写法不需要额外优化即可秒出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:03