【问题标题】:StartDate and EndDate Parameter based on which Date column is chosen in another dropdown parameterStartDate 和 EndDate 参数基于在另一个下拉参数中选择的日期列
【发布时间】:2019-09-19 21:27:46
【问题描述】:

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

目前我有开始日期和结束日期的日期选择器参数,但我正在努力将 DropDown 参数添加到查询中,因为我是 SSRS 的新手,所以不知道我应该如何去做。

这是我当前的代码:

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”中的任何一个'EndDate' 将过滤从下拉选项中选择的任何 DateType。

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

如果我的问题不清楚,谢谢和抱歉。

【问题讨论】:

    标签: tsql reporting-services


    【解决方案1】:

    标识符不能在 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)
    

    【讨论】:

    • 很高兴为您提供帮助 :-)
    【解决方案2】:

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

    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
    

    您可能不需要 DateColumnn 列,但我将它们留在那里以防万一。

    【讨论】:

    • 谢谢这也有效,但我认为早期的答案对我的目的来说更简单。再次感谢。
    • 没问题,很高兴你整理好了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多