首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS多个字段值不作为参数传递给钻取报表

SSRS多个字段值不作为参数传递给钻取报表
EN

Stack Overflow用户
提问于 2016-05-06 11:53:33
回答 1查看 1.4K关注 0票数 0

经过大量的研究,我还没有找到合适的答案来解决我下面的问题。

我有一份总结报告,其中显示了按专业名称和诊断分类的按月分列的约会总数。

代码语言:javascript
复制
Specialty_Name  Diagnosis Code   Feb   Mar   Apr

Neurology       G35X             0     3      4
                G379             8     5      7
                Total For Spec   8     8      11

Rheumatology    H051             4     9      2
                M059             6     10     3
                Total For Spec   10    19     5

当我单击字段(即神经学总计为=COUNT((Fields!Appointment_ID.Value) ),即Appointment_IDs时,我希望将每个Appointment_IDs作为参数传递给子查询,以显示相关的客户端详细信息。但是,当我准备子查询并以我以前使用过的方式向下钻取报告时,我只得到第一个Appointment_ID的结果,而不是每个的结果。

使用参数@Appointment_ID VARCHAR(MAX)和WHERE子句设置子查询报告:

代码语言:javascript
复制
CAST(App.App_ID AS VARCHAR(MAX)) in (
  SELECT * FROM Serve1.dbo.CreateParameterTable(@Appointment_ID,',')
)

CreateParameterTable是我们服务器上的一个函数,它应该处理摘要报告中的字符串,并在其他报告上这样做。

代码语言:javascript
复制
(
      @StringInput NVARCHAR(MAX)    
    , @SplitBy  NCHAR(1)
)
RETURNS @OutputTable TABLE ( [String] NVARCHAR(36) )
AS 
BEGIN

    DECLARE @String NVARCHAR(36)

    WHILE LEN(@StringInput) > 0
        BEGIN
            SET @String = LEFT(@StringInput,
                               ISNULL(NULLIF(CHARINDEX(@SplitBy, @StringInput) - 1,
                                             -1), LEN(@StringInput)))
            SET @StringInput = SUBSTRING(@StringInput,
                                         ISNULL(NULLIF(CHARINDEX(@SplitBy, @StringInput),
                                                       0), LEN(@StringInput))
                                         + 1, LEN(@StringInput))

            INSERT INTO @OutputTable ( [String] )
              VALUES ( @String )
        END

如果我手动输入多个Appointment_IDs到我的向下钻取报告,我将得到预期的结果。因此,看来我的总结报告没有传递字符串,或者函数没有正确地处理它,或者子报告不喜欢函数的输出,正如我已经说过的那样,它对我们编写的其他报告起作用。我很困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-09 22:28:14

如何开始疑难解答您的特定问题

因为您已经说过可以通过按需要提供一个值字符串来使子报表工作,所以问题在于报告提供了分隔的字符串。在解决这个问题之前,您需要看到被分隔的字符串被传递给子报表,所以将它添加到tablix中。使用相同的函数来引用"Go to Report“操作中的值,并将其作为工具提示添加到每个计数中。这样,您可以看到字符串正在准备,并调整您的逻辑,直到它正确出来。

我将如何解决你的问题

在我看来,作为一个多值参数,您想要完成的任务是不必要的复杂。

在表格中,您有一套组织结果的方法。您有专业名称、诊断和月份(大概是诊断或服务日期)。

这是三个参数,你可以传递给一个子报告。使用主报表中存在的类似sql逻辑,只需知道这三个字段的值加上年份,就可以隔离这11个字段。显然,您需要做一些工作才能找到某个月内的诊断/服务日期,但这并不难:

代码语言:javascript
复制
Where Month(Date_of_Service) =  @Month
    and Year(Date_of_Service) = @Year
    and Specialty_Name = @Specialty
    and Diagnosis_Code = @Diagnosis
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37071717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档