SQL查询中的SSRS报告参数处理

时间:2014-04-21 13:59:14

标签: sql-server reporting-services

我有一份SSRS报告,我在其中传递开始日期和结束日期以过滤我的数据。我需要获取那些在传递的日期值之间有数据的记录。我的查询如下..

SELECT * FROM Sample s WHERE s.RecStartDate >= ISNULL(@StartDate,s.RecStartDate)
AND s.RecEndDate <= ISNULL(@EndDate,s.RecEndDate)

在这里我必须处理&#39; NULL&#39;数据来自两个不同的领域。但问题是,在我的SSRS报告中,这两个日期的默认值是“TODAY&#39;”。当我选择@StartDate作为&#39; TODAY&#39;和@EndDate为10/12/2010,它永远不会按照上述条件工作。请帮我解决这个问题。

谢谢, 苏。

1 个答案:

答案 0 :(得分:1)

创建以下过程并在报告的数据集中使用此存储过程。

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来选择日期,而不是以不同的格式插入日期。

日期时间参数ON报告

enter image description here

日期时间参数属性

enter image description here