[英]SSRS date range parameter
我在SSRS 2016中有一個報告,其中包含一個SP,該SP的日期字段稱為startdate。 我想創建一個參數,用戶可以在其中選擇兩個范圍:startdate> ='2017'或startdate <'2017'。 這似乎應該很簡單,但是我看不出找到一種簡單的方法來做到這一點。
我試圖在SSRS中創建一個參數,在該參數中選擇“指定值”並手動添加這些值,但是出現一個錯誤,即“表達式引用了參數”集合中不存在的參數“ startdate”。
我確信我可以通過使用這些日期創建一個存儲過程來創建它,但這似乎比需要的工作還要多。
有誰知道更好的方法嗎?
如果要查找具有兩個選項的參數,0-2017年之前和1-2017年之后,則應僅創建一個具有兩個選項的Date參數,在label字段中的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())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.