最近一个月和最近第二个月的销售额总和



对于这12个月中的每一个月,我都希望创建一个字段,根据当前日期计算最近一个月和最近第二个月的账户级别的销售额。

例如,假设今天的日期是10/6/22,"MostRcentNovember"将总结2021年11月的销售额2ndMostRcentNovember"将总结2020年11月的销售额。一旦当前日期移到2022年11月,此查询将调整为从2022年起提取MostRcentNovember销售额,从2021年起提取2ndMostRcent十一月销售额。

相反,考虑到今天的日期是2022年6月10日,"六月中旬"将总结2022年6月份的销售额,"六月下旬"将总结2021年6月的销售额。

下面是我对这段代码的尝试,我认为这部分实现了,但不确定它是否正是我想要的

SELECT NovemberMostRecent_Value = 
sum(case when datepart(year,tran_date) = datepart(year, getdate())
AND DATEPART(month, tran_date) = 11 then value else 0 end)
NovemberSecondMostRecent_Value = 
sum(case when datepart(year,tran_date) = datepart(year, getdate())-1
AND DATEPART(month, tran_date) = 11 then value else 0 end)

这是源数据表的一个片段

<1500>
account_notrans_date
12321/22500
12321年11月1日500
12320/20
12322年6月3日5000
12321年4月6日2000
45620年3月11日525
45621年4月11日125

为什么不把过去两年的销售额汇总起来,然后按月份和年份分组?这难道不能解决问题吗?

或者,您可以展示一张表格,其中描述了您正在努力实现的目标。

这应该可以正常工作。注意:我只假设account_no对于所有行都是相同的,如果它们不同,那么您需要将其作为子查询中的一个条件传递。

WITH CTE AS
(SELECT (SELECT SUM(value) FROM tablename WHERE datepart(year, tran_date) = YEAR(getdate()) AND datepart(month, tran_date) = 11)
AS first_value,
(SELECT SUM(value) FROM tablename WHERE datepart(year, tran_date) = YEAR(getdate())-1 AND datepart(month, tran_date) = 11)
AS second_value,
(SELECT SUM(value) FROM tablename WHERE datepart(year, tran_date) = YEAR(getdate())-2 AND datepart(month, tran_date) = 11)
AS third_value)
SELECT IIF (first_value>0, first_value, second_value) AS NovemberMostRecent_Value,
IIF (first_value>0, second_value, third_value) AS NovemberSecondMostRecent_Value FROM CTE;

相关内容

  • 没有找到相关文章

最新更新