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

无需动态SQL,借助IntervalDays表查询即将到期的许可证信息

解法

你可以通过关联IntervalDays表替代硬编码的多OR条件,推荐用EXISTS写法,性能更优,也不会出现重复数据问题:

SELECT lic.LicenceId
FROM Licences lic
WHERE EXISTS (
    SELECT 1 
    FROM IntervalDays id
    -- 此处DayValue为IntervalDays表中存储间隔天数的字段,可替换为实际字段名
    WHERE CONVERT(DATE, lic.ExpirationDate) = CONVERT(DATE, DATEADD(Day, id.DayValue, GETDATE()))
)

可选JOIN写法

如果更习惯关联查询的写法,可使用以下语句,注意需要加DISTINCT避免重复返回许可证记录:

SELECT DISTINCT lic.LicenceId
FROM Licences lic
INNER JOIN IntervalDays id 
    ON CONVERT(DATE, lic.ExpirationDate) = CONVERT(DATE, DATEADD(Day, id.DayValue, GETDATE()))

说明

  • 两种写法的逻辑都和你原硬编码的查询完全等价,IntervalDays表内的间隔天数调整无需修改SQL,自动适配
  • 全程为静态SQL,不需要动态生成,数据库可正常生成执行计划,符合性能要求
  • 优先推荐EXISTS写法,不需要额外去重,执行效率更高
  • 注意你原SQL中存在别名不一致的笔误:表别名定义为lic,但到期日期字段前用了vip,使用时注意对齐实际字段名和别名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:27:02