好的,我正在编写报告的存储过程,我需要每个人的最后销售日期为6的除数,例如 - 当报告运行时,它将使用今天的日期作为日期和任何人的最后销售日期正好是从今天起6个月或12个月或18个月,应在存储过程中退回。
我最初的想法是使用where子句;
WHERE LastSaleDate = DATEADD(m, -6, @Date)
OR LastSaleDate = DATEADD(m, -12, @Date)...
有更好的方法吗?
答案 0 :(得分:2)
您可以以6个月为增量加入日期列表。如果没有完整的DDL,我无法创建完整的查询,但您应该可以使用以下内容:
SELECT *
FROM T
INNER JOIN
( SELECT [Date] = DATEADD(MONTH, - Number, @Date)
FROM Master..spt_values
WHERE Type = 'P'
AND Number % 6 = 0
) D
ON D.Date = T.LastSalesDate