【发布时间】:2022-11-17 02:27:16
【问题描述】:
我正在尝试获取当前数据之前第 5 个月的数据。我努力了
MONTH(GETDATE()) - MonthNum ='5'
其中 monthnum 已从以前的 CTE 中的日期解析。
这适用于第 6 个月及以后,但不适用于前几个月。
最终目标是,例如在 11 月,我只能看到 6 月的数据,而不仅仅是当前年份的所有年份。
SELECT *
FROM TABLE
WHERE MONTH(GETDATE()) - AnniMonthNum ='5'
【问题讨论】:
-
请添加您尝试过的完整 SQL;输入示例;预期输出示例;所以我们可能会在这里为您提供最好的帮助 - 包括表/列定义,因为它可能会改变此处的答案。
-
你的问题是你如何解释“这适用于第 6 个月及以后但不适用于前几个月”的年份范围。
-
为什么不用
DATEADD?MONTH('20210101') -5将给出“月份”-4;没有第-4个月。 -
“最终目标是……我可以看到数据……所有年”。您是否要求每年单独排成一行?您实际上是在计算代码示例中的标量,这在问题的上下文中没有意义。您只是要求将数据集限制在 6 月份(或更具体地说,是当月之前的 5 个月)吗?如果是这样,那么
DECLARE @month = MONTH(DATEADD(month,-5,GETDATE())); SELECT * FROM table as t WHERE MONTH(t.transaction_date) = @month;澄清您的问题以获得实际答案。 -
例如,我想查看当前月份减去 5 个月的每一年的所有销售额。所以在 11 月,我想查看 6 月所有年份的所有销售额
标签: sql sql-server