【发布时间】:2016-05-10 06:28:14
【问题描述】:
经过多次搜索,我没有找到适合我以下问题的答案。
我有一份总结报告,其中显示按月按专业名称和诊断分组的预约总数。
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) 的字段(即,11 表示神经病学总计,4 月)时,我想将每个 Appointment_ID 作为参数传递给子查询,以显示关联的客户详细信息。但是,当我以我之前使用的方式准备子查询和向下钻取报告时,我只得到第一个 Appointment_ID 的结果;不是每一个。
子查询报表是用参数@Appointment_ID VARCHAR(MAX)和WHERE子句设置的:
CAST(App.App_ID AS VARCHAR(MAX)) in (
SELECT * FROM Serve1.dbo.CreateParameterTable(@Appointment_ID,',')
)
CreateParameterTable 是我们服务器上的一个函数,它应该处理摘要报告中的字符串,并在其他报告中处理。
(
@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_ID,我会得到预期的结果。因此,我的摘要报告似乎没有传递字符串,或者函数没有正确处理它,或者子报告不喜欢函数的输出,正如我所说的那样,它适用于我们编写的其他报告。我被难住了。
【问题讨论】:
-
在子报表的参数映射中,值的表达式是什么样的?它是传递完整的值数组(即 Fields!Appointment_ID.Value),还是仅传递第一个值(即 Fields!Appointment_ID.Value[0])?
-
嗨。这是根据您的第一个示例,因此应该传递完整的值数组。谢谢
-
您能否在子报表顶部添加 Fields!Appointment_ID.Value 以确保它符合您的预期?这将缩小问题范围......发送参数的报告或子报告有问题吗?
标签: reporting-services ssrs-2008-r2