[英]SSRS Report Parameter handling in SQL Query
我有一個SSRS報告,可以在其中傳遞開始日期和結束日期以過濾數據。 我需要獲取那些在傳遞的日期值之間有數據的記錄。我有如下查詢..
SELECT * FROM Sample s WHERE s.RecStartDate >= ISNULL(@StartDate,s.RecStartDate)
AND s.RecEndDate <= ISNULL(@EndDate,s.RecEndDate)
在這里,我必須處理“ NULL”,並且數據來自兩個不同的字段。 但是問題是,在我的SSRS報告中,這兩個日期的默認值為“今天”。 當我選擇@StartDate作為'TODAY'和@EndDate作為10/12/2010時,它將無法按照上述條件工作。 請幫我解決這個問題。
謝謝你蘇
創建以下過程,並在報表的數據集中使用此存儲過程。
CREATE PROCEDURE dbo.SomeReportProc
@StartDate DATETIME,
@EndDate DATETIME
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'SELECT * FROM Sample s WHERE 1 = 1 '
+ CASE WHEN @StartDate IS NOT NULL
THEN N' AND s.RecStartDate >= @StartDate ' ELSE N'' END
+ CASE WHEN @EndDate IS NOT NULL
THEN N' AND s.RecEndDate <= @EndDate ' ELSE N'' END
EXECUTE sp_executesql @Sql
,N'@StartDate DATETIME, @EndDate DATETIME'
,@StartDate
,@EndDate
END
注意
還要確保將參數類型選擇為datetime
以便當用戶輸入日期時,他們使用該漂亮的GUI來選擇日期,而不是以不同的格式插入日期。
日期時間參數開啟報告
日期時間參數屬性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.