【问题标题】:SSRS Multivalue parameter Condition Expected near ',' + SQL StatementSSRS 多值参数 Condition Expected near ',' + SQL 语句
【发布时间】:2016-10-28 17:16:40
【问题描述】:

有一个很长的查询,我需要围绕它构建一个 SSRS 报告。 SSRS 报告中的参数需要允许基于另一个数据集查询的多值选择。我遇到的是在 SSRS 中的参数上使用多选选项时出现以下错误

在预期条件的内容中指定的非布尔类型的表达式,靠近“,”。

我确定我没有正确编写我的 case 语句来解释下面粗体的 @Status 的多值参数。谁能帮我确定如何写这个以允许参数使用多值?

在哪里

im_incident.im_id = 
    CASE 
        When @Incident_Number IS NULL
        THEN im_incident.im_id
        ELSE @Incident_Number
    END 
**AND lc_status.lc_title IN (   
    CASE 
        When @Status IS NULL
        Then lc_status.lc_title
        Else @Status
    END)**
AND (
        dateadd(mi, datediff(mi, getutcdate(),getdate()),pm_creation_date) BETWEEN IsNull(@Creation_Start_Date,'9/15/2016 00:00:00') 
        AND IsNull(@Creation_End_Date,GetDate())
    )
AND (
        dateadd(mi, datediff(mi, getutcdate(),getdate()),im_incident_resolution.im_creation_date) BETWEEN IsNull(@Resolved_Start_Date,'9/15/2016 00:00:00') 
        AND IsNull(@Resolved_End_Date,GetDate())
    )

【问题讨论】:

  • 您使用的是存储过程还是嵌入在 SSRS 中?

标签: sql reporting-services


【解决方案1】:

你有这个:

AND lc_status.lc_title IN (   
CASE 
    When @Status IS NULL
    Then lc_status.lc_title
    Else @Status
END)

以下是正确的:

-- Single value
AND lc_status.lc_title =   
CASE 
    When @Status IS NULL
    Then lc_status.lc_title
    Else @Status
END

-- multi value
AND lc_status.lc_title IN ('title1','title2','title3')

我个人会这样写:

-- Single value
AND lc_status.lc_title = COALESCE(@Status,lc_status.lc_title)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多