我在 SSRS 2016 中有一份报告,其中包含一个 SP,其中有一个名为 startdate 的日期字段。我想创建一个参数,用户可以在两个范围之间进行选择:startdate >='2017' 或 startdate < '2017'. This seems like it should be simple, but I can't see to find an easy way to do this.
我尝试在 SSRS 中创建一个参数,其中选择“指定值”并手动添加这些值,但出现错误,指出“表达式引用了参数集合中不存在的参数“startdate”。
我确信我可以通过使用这些日期创建一个存储过程来创建它,但这似乎比需要的工作更多。
有谁知道更好的方法吗?
如果您希望有一个具有两个选项的参数,0 - 2017 年之前,1 - 2017 年之后,那么您应该创建一个具有两个选项的日期参数,在标签字段中的 1/1/2017 之前带有 0在值字段中,在标签字段中 1/1/17 之后,值字段中为 1。然后在您的报告中,您只需根据 1 或 0 值过滤数据即可。
例如:
DECLARE @DateFilter INT = 1
IF ( @DateFilter = 0 )
BEGIN
SELECT * FROM dbo.MyTable t
WHERE t.DateFilter < '1/1/17'
END
IF ( @DateFilter = 1 )
BEGIN
SELECT * FROM dbo.MyTable t
WHERE t.DateFilter >='1/1/17'
END
我不知道你为什么要这样过滤你的数据。我建议使用 Larnu 的建议,即您有两个参数:开始日期和结束日期。否则,随着时间的推移,这可能会为第二个选项返回很多行。
在SSRS中添加几个参数,例如FromDate和ToDate,并将其数据类型设置为Date/Time。 您可以使用 DateAdd 函数指定这些参数的默认值,示例如下:
今天:
=Today()
上周从今天开始:
=DateAdd(DateInterval.Day, -7,Today())
您可以按照类似的方式添加/减少年份、季月等,如下所示。只需将数字更改为所需长度即可
=DateAdd(DateInterval.Year,-1,Today())
=DateAdd(DateInterval.Quarter,-1,Today())
=DateAdd(DateInterval.Month,-1,Today())
=DateAdd(DateInterval.DayOfYear,-1,Today())
=DateAdd(DateInterval.WeekOfYear,-1,Today())
=DateAdd(DateInterval.WeekDay,-1,Today())
=DateAdd(DateInterval.Hour,-1,Today())
=DateAdd(DateInterval.Minute,-1,Today())
=DateAdd(DateInterval.Second,-1,Today())