来自 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)
获取将在给定天数间隔前到期的许可证详细信息。有两个 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)