2017-05-26 48 views
1

所以我一直在研究一段时间的报告。我仍然是一个noob,所以我不知道如何处理我目前的问题,这是重复的参数值。处理SSRS参数中的重复项

下面是我的参数的屏幕截图。 Paramater一个参数下拉与我的程序有关,而另一个是活动。正如你所看到的,当选择两个程序时,都会出现“Basics for”的重复。

这是我的数据库的一个片段。 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),但我只是想知道如果有一个以某种方式加入这两个方式?这是令人讨厌的下拉菜单中的重复。

谢谢。

+0

难道你不能像'SELECT distinct A.Activity_ID,A.Activity_Name + aa.ProgramName AS Activity_Name'那样做一些事情,使其独特吗? –

+0

这也可以!我喜欢它显示活动旁边的程序。谢谢。 – JerrySein

回答

0

太长的评论。我想你可以看看参数的名字。所以基本上你只需从你的活动查询中删除​​。但是,你还需要在主要查询中做一些不同的事情(假设你正在过滤​​的值)。

你的动态查询看起来像:

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]) 

注:这可能有性能影响。

+0

我不认为这会很简单!性能方面似乎也没有任何变化。谢谢! 对不起,我不能upvote你呢。 – JerrySein

+0

没问题。很高兴我能帮到你......数据库变得更大时,性能问题可能会出现。但也有可能不会受到影响。祝你好运! – BJones