我需要一些关于Quarterly
数据求和的过滤器的帮助。 对于Yearly
数据,我添加了公式。
对于Quarterly
数据,我现在已硬编码,但需要让系统进行计算。
所以例如下个季度将是Quarter 3
,我需要计算当前年度/当前季度的数字(该季度 3 个月的数字总和(
过滤器代码片段
其中 [状态] = "完成" AND (YEAR([日期字段]( = YEAR(GETDATE((( - 1 OR YEAR([日期字段]( = YEAR(GETDATE((( - 2 OR YEAR([日期字段]( = YEAR(GETDATE((( 和月份([日期字段](在(4,5,6((--四月/五月/六月。
很抱歉提供不完整的答案。我在回答后想到了这一点。
选择* 从表 其中 [状态] = "完成" 和 [DATEFIELD] 之间的转换(日期, 日期添加(M, -2, 日期添加(D, -DAY(日期添加(D, -1, GETDATE((((, GETDATE(((( 和 EOMONTH(DATEADD(D, -DAY(DATEADD(D, -1, GETDATE((((, GETDATE((
((解释:
为了使过滤器准确,您需要获取该月的第一天和最后一天。
第一天:
获取当前日期:
SELECT GETDATE()
2018-09-06 17:03:35.467
获取当前日期减 1
SELECT DATEADD(D, -1, GETDATE())
2018-09-05 17:03:35.467
将"当前日期减去 1"(上述结果(到当前日期。
SELECT DATEADD(D, -DAY(DATEADD(D, -1, GETDATE())), GETDATE())
2018-09-01 17:03:35.467
仅获取日期部分:
SELECT CONVERT(date, DATEADD(D, -DAY(DATEADD(D, -1, GETDATE())), GETDATE()))
2018年09月01
日
最后一天:
与获取第一天相同,但CONVERT
更改为EOMONTH
,因为后者已经仅将结果作为date
部分返回
SELECT EOMONTH(DATEADD(D, -DAY(DATEADD(D, -1, GETDATE())), GETDATE()))
2018年09月30
日
所以你现在有
选择转换(日期, 日期添加(D, -DAY(日期添加(D, -1, GETDATE((((, GETDATE(((( ,EOMONTH(DATEADD(D, -DAY(DATEADD(D, -1, GETDATE((((, GETDATE(((
(2018-09-01
2018年09月30
日
从当月获取前 2 个月。
选择 CONVERT(DATE, DATEADD(M, -2, DATEADD(D, -DAY(DATEADD(D, -1, GETDATE((((, GETDATE((((请注意,
我刚刚将DATEADD(M, -2, )
添加到">第一天"值。
将 2 个月前的第一天和您获得的当月的最后一天结合起来
选择 CONVERT(DATE, DATEADD(M, -2, DATEADD(D,-DAY(DATEADD(D, -1, GETDATE((((, GETDATE(((( ,EOMONTH(DATEADD(D, -DAY(DATEADD(D, -1, GETDATE((((, GETDATE(((
(2018-07-01
2018年09月30
日