簡體   English   中英

SSRS日期范圍參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM