所以我有一个查询,声明一个单一日期,然后使用基于该日期的 where 子句来限制月份。示例:
declare @date date = '8/31/2024';
select *
from x
where ReportDate = @date
and ApprovedDate <= @date
and ApprovedDate > eomonth(@date,-1)
问题是我必须将输出复制并粘贴到 Excel 中,更改日期,然后对一年中的每个月进行冲洗和重复。我想做的是能够使用一个查询一次性提供全年的数据,而无需一遍又一遍地摸索日期。
因此,例如,如果我的数据集本质上只会一天天变长,那么我会在接下来的几个月中得到重复的项目 (A + B):
报告日期 | 项目 | 批准日期 |
---|---|---|
2024 年 8 月 31 日 | A | 2024 年 5 月 15 日 |
2024 年 8 月 31 日 | B | 2024 年 7 月 6 日 |
2024 年 8 月 31 日 | C | 2024 年 8 月 2 日 |
2024 年 7 月 31 日 | A | 2024 年 5 月 15 日 |
2024 年 7 月 31 日 | B | 2024 年 7 月 6 日 |
在第一次运行查询时,我将按上述方式运行它,以便它仅返回项目“C”。
报告日期 | 项目 | 批准日期 |
---|---|---|
2024 年 8 月 31 日 | C | 2024 年 8 月 2 日 |
在第二次运行时,我将日期更改为 7/31/2024,这样它只会返回项目“B”。
报告日期 | 项目 | 批准日期 |
---|---|---|
2024 年 7 月 31 日 | B | 2024 年 7 月 6 日 |
但是我想要声明一组日期(8/31/2024、7/31/2024)并且只需查询一次即可返回:
报告日期 | 项目 | 批准日期 |
---|---|---|
2024 年 8 月 31 日 | C | 2024 年 8 月 2 日 |
2024 年 7 月 31 日 | B | 2024 年 7 月 6 日 |
我希望这是有道理的!有人可以帮我解决这个问题吗?
非常感谢!!!
删除
@date
变量:
select *
from x
where ApprovedDate <= ReportDate
and ApprovedDate > eomonth(ReportDate, -1)