0

好的,我正在为报告编写一个存储过程,我需要每个人的最后销售日期都在 6 的除数中,例如 - 当报告运行时,它将使用今天的日期作为日期,并且任何人的最后销售日期都是准确的从今天开始的 6 个月或 12 个月或 18 个月应在存储过程中返回。

我最初的想法是使用 where 子句;

WHERE LastSaleDate = DATEADD(m, -6, @Date)
   OR LastSaleDate = DATEADD(m, -12, @Date)...

有没有更好的方法来做到这一点?

4

1 回答 1

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
于 2013-02-13T16:42:47.520 回答