处理SSRS参数中的重复项

时间:2017-05-26 14:06:52

标签: sql reporting-services ssrs-2008

所以我现在已经在报告上工作了一段时间。我还是个菜鸟,所以我不知道如何处理我当前的问题,这是重复的参数值。

这是我的参数的屏幕截图。 Paramater一个参数下拉列表与我的程序有关,而第二个参数下拉列表是活动。正如您所看到的,当选择两个程序时,有""基础知识的副本。

这是我的数据库的片段。 Database两个不同的程序附加了不同的ID。

最后,这是我参数的代码。

计划:

SELECT distinct
A.ProgramID, A.ProgramName

FROM dwh.Bks_DWH_Programs A
INNER JOIN dwh.Bks_DWH_OrgUnits d on A.ProgramOrgUnitID = d.OrgUnitID

WHERE d.OrgUnitParentID in (@OP) and 
d.OrgUnitID in (@OU)

活动:

SELECT distinct A.Activity_ID, A.Activity_Name

FROM dwh.Bks_DWH_Activities A
INNER JOIN dwh.Bks_DWH_Programs aa on a.Activity_EntityID = aa.ProgramID
INNER JOIN dwh.Bks_DWH_OrgUnits d on aa.ProgramOrgUnitID = d.OrgUnitID

WHERE d.OrgUnitParentID in (@OP) and 
d.OrgUnitID in (@OU) and
aa.ProgramID in (@TP)

ORDER by A.Activity_ID

我理解为什么有重复项(因为程序有不同的ID),但我只是想知道是否有办法以某种方式加入这两个?下拉列表中有重复项令人讨厌。

谢谢。

1 个答案:

答案 0 :(得分:0)

评论太久了。我想你可以查看参数的名称。所以基本上你只需从Activity查询中删除A.Activity_ID。但是,您还需要在主查询中执行不同的操作(假设您正在过滤传递的A.Activity_ID值。)

您的活动查询如下:

SELECT DISTINCT A.Activity_Name
FROM...

你的主查询会有类似的内容:

WHERE d.OrgUnitParentID IN (@OP) 
AND d.OrgUnitID IN (@OU) 
AND aa.ProgramID IN (@TP)
AND a.Activity_Name = @[YourActivityParameter]

...或

AND a.Activity_Name IN (@[YourActivityParameter])

注意:这可能会影响性能。