【发布时间】:2022-11-10 06:45:43
【问题描述】:
对于 12 个月中的每一个月,我希望创建一个字段,根据当前日期在最近一个月和最近第二个月的帐户级别汇总销售额。
例如,假设今天的日期是 22 年 10 月 6 日,“MostRecentNovember”将汇总 2021 年 11 月的销售额。“2ndMostRecentNovember”将汇总 2020 年 11 月的销售额。一旦当前日期移至 2022 年 11 月,此查询将调整为从 2022 年开始拉动 MostRecentNovember 的销售额,从 2021 年开始拉动 2ndMostRecentNovember 的销售额。
相反,鉴于今天的日期是 22 年 10 月 6 日,“MostRecentJune”将汇总 2022 年 6 月的销售额,“2ndMostRecentJune”将汇总 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)
这是源数据表的sn-p
| account_no | tran_date | value |
|---|---|---|
| 123 | 11/22/21 | 500 |
| 123 | 11/1/21 | 500 |
| 123 | 11/20/20 | 1500 |
| 123 | 6/3/22 | 5000 |
| 123 | 6/4/21 | 2000 |
| 456 | 11/3/20 | 525 |
| 456 | 11/4/21 | 125 |
根据评论中的请求。所需结果表
| account_no | NovemberMostRecent | November2ndMostRecent |
|---|---|---|
| 123 | 1000 | 1500 |
| 456 | 125 | 525 |
【问题讨论】:
标签: sql sql-server case getdate datepart