来自 table 的表单条件,没有动态 SQL

Form condition from table without dynamic SQL

获取将在给定天数间隔前到期的许可证详细信息。有两个 table,一个是 'Licenses',它包含许可证详细信息和到期日期。另一个 table 是 'IntervalDays',它包含天数。

如果我们对间隔天数进行硬编码,我们可以编写如下查询,但是我们如何使用其他 table 作为 where 条件。注意:出于性能考虑,我们不应该使用动态 sql,如果有人能尽早提供帮助,我们将不胜感激。

SELECT LicenceId
           FROM Licences lic                   
           WHERE  (CONVERT(DATE, vip.ExpirationDate) = CONVERT(DATE, DATEADD(Day, 30, GETDATE()))
                      OR CONVERT(DATE, vip.ExpirationDate) = CONVERT(DATE, DATEADD(Day, 15, GETDATE()))
                      OR CONVERT(DATE, vip.ExpirationDate) = CONVERT(DATE, DATEADD(Day, 7, GETDATE()))
                      OR CONVERT(DATE, vip.ExpirationDate) = CONVERT(DATE, DATEADD(Day, 3, GETDATE()))
                      OR CONVERT(DATE, vip.ExpirationDate) = CONVERT(DATE, DATEADD(Day, 2, GETDATE()))
                      OR CONVERT(DATE, vip.ExpirationDate) = CONVERT(DATE, DATEADD(Day, 1, GETDATE())))

这对你有用吗?

    SELECT LicenceId
       FROM Licences lic                   
       WHERE CONVERT(DATE, vip.ExpirationDate) IN (SELECT CONVERT(DATE, DATEADD(Day, [day], GETDATE())) FROM IntervalDays)