2016-05-26 50 views
0

我想创建一个示例SSRS报告,允许选择多个日期范围参数。我能够创建报告,允许用户使用下面的查询来选择查看ReportPeriod之一。现在我想允许用户选择多个参数,并且导出的Excel将每个结果放在一个单独的表单中。在MS Visual Studio中,我已将参数设置为“允许多个值”。我应该如何修改我的SQL?SSRS报告,允许选择多个日期范围参数

DECLARE @StartDate DATETIME 
DECLARE @EndDate DATETIME 
DECLARE @ReportPeriod CHAR(1) 

IF @ReportPeriod='D' 
BEGIN 
    SET @StartDate= DATEADD(day,DATEDIFF(day,1,GETDATE()),0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

ELSE IF @ReportPeriod='W' 
BEGIN 
    SET @StartDate = DATEADD(wk, DATEDIFF(wk,6, GETDATE()),-1) 
    SET @EndDate = DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6) 

END 

ELSE IF @ReportPeriod='M' 
BEGIN 
    SET @StartDate=DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) 
    SET @EndDate= DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, 0) 
END 

ELSE IF @ReportPeriod='X' -- Get Month To Date 
BEGIN 
    SET @StartDate=DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

ELSE IF @ReportPeriod='Y' -- Get Year To Date 
BEGIN 
    SET @StartDate=DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

SELECT @StartDate AS 'StartDate', @EndDate AS 'EndDate' 
+0

你打算如何选择Muiltiple日期范围?在问题中缺少什么?请用参数显示reprot! – Hiten004

+0

@ Hiten004报告本身仅使用2个参数:StartDate和EndDate,如您在SELECT语句中看到的那样。当我在Visual Studio中创建报表时,我创建了标签为'D','W','M','X','Y'的ReportPeriod参数。取决于ReportPeriod选择的值,它将设置等效的StartDate和EndDate。 – kemflan

回答

0

要在多值参数检查特定的值,请尝试更改对比

IF 'D' IN(@ReportPeriod) 
BEGIN 
    SET @StartDate= DATEADD(day,DATEDIFF(day,1,GETDATE()),0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

但是,如果你的报告只有一个开始日期和一个结束日期,这听起来像你还需要更改日期参数逻辑以适应具有不同开始和结束日期的多个时间段。