我正在尝试创建一个样本SSRS报告,允许选择多个日期范围参数。我能够创建报告,允许用户使用下面的查询选择查看其中一个ReportPeriod。现在我想允许用户选择多个参数,导出的Excel将每个结果都放在一个单独的工作表中。在MS Visual Studio中,我已将参数设置为"允许多个值"。我该如何修改我的SQL?
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 :(得分: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
但是,如果您的报告只有一个开始日期和一个结束日期,则听起来您还需要更改日期参数逻辑以满足具有不同开始日期和结束日期的多个期间。