如何声明然后在 where 子句中使用的值列表

问题描述 投票:0回答:1

所以我有一个查询,声明一个单一日期,然后使用基于该日期的 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 日

我希望这是有道理的!有人可以帮我解决这个问题吗?

非常感谢!!!

sql sql-server
1个回答
0
投票

删除

@date
变量:

select *
from x
where ApprovedDate <= ReportDate
and ApprovedDate > eomonth(ReportDate, -1)
© www.soinside.com 2019 - 2024. All rights reserved.