基于在另一个下拉参数中选择的日期列的StartDate和EndDate参数



我希望能够在SSRS中设置报告,您可以通过可用的3个日期列之一过滤结果,并输入开始日期&结束日期为参数2&parameter3作为日期选择器。

目前,我有开始日期和结束日期的日期选择器参数,但是我正在努力将下拉参数添加到查询中,因为我是SSR的新手,因此不确定我该如何处理我。

这是我当前的代码:

SELECT
Column1,
Column2,
Column3,
DateColumn1,
DateColumn2,
DateColumn3
FROM Table
WHERE DateColumn1 BETWEEN @StartDate AND @EndDate

我想要这样的东西:

SELECT
Column1,
Column2,
Column3,
DateColumn1,
DateColumn2,
DateColumn3
FROM Table
WHERE @DateType BETWEEN @StartDate AND @EndDate

在这种情况下,我想将较早的datecolumn1扩展到" dateType"参数,这将使我能够创建下拉参数,以便我可以从下拉列表中选择datecolumn1/datecolumn2/datecolumn3中的一个,从下拉列表和'startDate'&amp'&amp'&'endDate'将对从下拉选项中选择的任何数据类型过滤。

我不确定我是否从SQL查询的角度以错误的方式考虑这一点,或者是否有更好的方法来实现此目标。

谢谢,对不起,如果我的问题还不清楚。

标识符无法在SQL中进行参数化,但是您可以使用ANDOR的简单组合基于@DateType参数过滤不同的列,例如:

>
SELECT
    Column1,
    Column2,
    Column3,
    DateColumn1,
    DateColumn2,
    DateColumn3
FROM Table
WHERE (@DateType = 1 AND DateColumn1 >= @StartDate AND DateColumn1 <= @EndDate)
OR (@DateType = 2 AND DateColumn2 >= @StartDate AND DateColumn2 <= @EndDate)
OR (@DateType = 3 AND DateColumn3 >= @StartDate AND DateColumn3 <= @EndDate)

另一种方法是在查询中创建一个计算的列,然后对其进行测试。像

SELECT * FROM 
    (SELECT
        Column1,
        Column2,
        Column3,
        DateColumn1,
        DateColumn2,
        DateColumn3,
        CASE @DateType
            WHEN 1 THEN DateColumn1
            WHEN 2 THEN DateColumn2
            WHEN 3 THEN DateColumn3
            ELSE NULL
        END AS CompareDate
      FROM Table) x
    WHERE x.CompareDate BETWEEN @StartDate AND @EndDate

您可能不需要DateColumn n 列,但我将它们留在那里。

最新更新