0

我在网上找到了很多关于将多值参数传递给 SSRS 中的钻取报告的帮助。我还没有找到 SSRS 中多个多值参数的成功响应。

为了解释,我有以下总结报告:

SELECT

SH.[USER-ID],
U.[DESCRIPTION] AS "USER NAME",
COUNT (J.[JOB-NO]) AS "NUMBER-OF-JOBS"

FROM

[RM-JOB] AS J
LEFT OUTER JOIN
[RM-STAGE-HISTORY] AS SH ON SH.[JOB-NO] = J.[JOB-NO]
JOIN
[CO-USERS] AS U ON U.[USER-NAME] = J.[RAISED-BY]
LEFT JOIN
[IH-LOCATION] L ON J.[PLACE-REF] = L.[PLACE-REF]
LEFT JOIN
[IH-LOC-ATTR] LA ON  J.[PLACE-REF] = LA.[PLACE-REF] AND LA.[ATTRIB-CODE] = 'SBU'


WHERE

J.[DATE-LOGGED] BETWEEN @DATE1 AND @DATE2
AND
SH.[STAGE-CODE] IN ('06')
AND
SH.[STAGE-DATE] BETWEEN @DATE1 AND @DATE2
AND
J.[RAISED-BY] = SH.[USER-ID]
AND
LA.[SUB-ATTRIB-CODE] IN (@SBU)
AND
J.[RAISED-BY] IN (@RAISEDBY)
AND
J.[LATEST-PRIORITY] IN (@Priority)
AND
L.[MGT-AREA] IN (@MGTAREA)

GROUP BY

SH.[USER-ID],
U.[DESCRIPTION]

ORDER BY

U.[DESCRIPTION]

以及以下详细信息报告:

   SELECT DISTINCT

    J.[RAISED-BY],
    J.[JOB-NO],
    LEFT(J.[PLACE-REF],3) AS [SCHEME],
    J.[PLACE-REF],
    L.[MGT-AREA],
    LA.[SUB-ATTRIB-CODE] SBU,
    J.[JOB-STATUS],
    CONCAT(IP.[PRIORITY-CODE], '- ',IP.DESCRIPTION) [INITIAL-PRIORITY],
    CONCAT(LP.[PRIORITY-CODE], '- ',LP.DESCRIPTION) [LATEST-PRIORITY],
    J.[DATE-LOGGED],
    J.[CURRENT-STAGE-CODE],
    J.[ORIG-LOGGED-VALUE] AS "LOGGED-VALUE",
    J.[TOTAL-VALUE],
    J.[SHORT-DESCRIPTION],
    J.[CONTRACTOR],
    C.[DESCRIPTION],
    J.[CL-ANALYSIS-CODE-ELEMENT],
    J.[CL_ANALYSIS_CODE_ELEMENT##2],
    J.[CL_ANALYSIS_CODE_ELEMENT##3],
    J.[CL_ANALYSIS_CODE_ELEMENT##4],
    J.[CL_ANALYSIS_CODE_ELEMENT##5],
    SH.[JOB-AMENDED]

    FROM

    [RM-JOB] AS J
    LEFT OUTER JOIN
    [RM-CONT] as C ON C.CONTRACTOR = J.CONTRACTOR
    RIGHT OUTER JOIN
    (SELECT 
           [JOB-NO], 
           CASE WHEN MAX([STAGE-CODE]) = ('11') THEN 'YES' ELSE 'NO' END AS "JOB-AMENDED"
    FROM
    [RM-STAGE-HISTORY] 
    WHERE [STAGE-CODE] IN ('06','11')
    GROUP BY [JOB-NO]) AS SH ON J.[JOB-NO] = SH.[JOB-NO] 

    LEFT JOIN
    [RM-PRIORITY] IP ON J.[INITIAL-PRIORITY] = IP.[PRIORITY-CODE]
    LEFT JOIN
    [RM-PRIORITY] LP ON J.[INITIAL-PRIORITY] = LP.[PRIORITY-CODE]
    LEFT JOIN
    [IH-LOCATION] L ON J.[PLACE-REF] = L.[PLACE-REF]
    LEFT JOIN
    [IH-LOC-ATTR] LA ON  J.[PLACE-REF] = LA.[PLACE-REF] AND LA.[ATTRIB-CODE] = 'SBU'

    WHERE

    J.[DATE-LOGGED] BETWEEN @DATE1 AND @DATE2
    AND
    J.[RAISED-BY] = @RAISEDBY
    AND
    LA.[SUB-ATTRIB-CODE] IN (@SBU)
    AND
    J.[LATEST-PRIORITY] IN (@Priority)
    AND
    L.[MGT-AREA] IN (@MGTAREA)

现在,@Date1、@Date2 和 @RAISEDBY 都是单值并且工作正常,但 @SBU、@Priority 和 @MGTAREA 都是多值。在所有三种情况下,我都将多值参数设置为允许多个值,并且在文本框操作中,我设置了所有三个参数以按照其他地方的建议拆分多个值: =SPLIT(JOIN(Parameters!SBU.Value , ","), ",")

但是,当我为@Priority 或@MGTAREA 选择多个值时,详细信息报告为空白。这是我第一次认为我已经这样做了,我想知道我是否做了任何明显的错误,或者 SSRS 是否甚至可以在同一个钻取中处理三个多值参数。

任何帮助都感激地接受,我一天中的大部分时间都在盯着这个!

4

3 回答 3

0

我找到了解决方案。我试图将详细信息报告作为存储过程运行。这两个响应都使我尝试将详细信息报告作为客户端代码运行。它以这种方式完美地工作。

看来存储过程报告不喜欢多个多值参数!

于 2019-02-12T10:20:19.143 回答
0

如果您的数据集查询直接在数据集中(即您没有使用存储过程),则无需对它们执行任何 SPLIT 和/或 JOIN 方法。SSRS 将自动注入一个逗号分隔的列表来代替您查询中的 @parameters。

确保参数属性中的参数数据类型设置为文本(即使它们是数字)

于 2019-02-11T16:54:21.123 回答
0

您是否尝试过在 Visual Studio 中执行详细报告(而不是作为子报告)?

于 2019-02-11T16:57:34.387 回答