处理 SSRS 参数中的重复项
Dealing with duplicates in SSRS parameters
所以我已经为一份报告工作了一段时间。我还是菜鸟,所以我不确定如何处理我当前的问题,这是重复的参数值。
这是我的参数的屏幕截图。 Paramater 一个参数下拉列表与我的程序有关,而第二个是活动。如您所见,当两个程序都被选中时,"Basics for" 出现重复。
这是我的数据库的一个片段。 Database 两个不同的程序附加了不同的 ID。
最后,这是我的参数代码。
程序:[=32=]
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)
Activity:
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),但我只是想知道是否有办法以某种方式将两者结合起来?下拉列表中有重复项很烦人。
谢谢。
评论太长。我想你可以看看参数的名称。所以基本上你只需从你的 Activity 查询中删除 A.Activity_ID
。但是你还需要在你的主查询中做一些不同的事情(假设你正在过滤正在传递的 A.Activity_ID
值)。
您的 Activity 查询如下所示:
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])
注意:这可能会影响性能。
所以我已经为一份报告工作了一段时间。我还是菜鸟,所以我不确定如何处理我当前的问题,这是重复的参数值。
这是我的参数的屏幕截图。 Paramater 一个参数下拉列表与我的程序有关,而第二个是活动。如您所见,当两个程序都被选中时,"Basics for" 出现重复。
这是我的数据库的一个片段。 Database 两个不同的程序附加了不同的 ID。
最后,这是我的参数代码。
程序:[=32=]
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)
Activity:
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),但我只是想知道是否有办法以某种方式将两者结合起来?下拉列表中有重复项很烦人。
谢谢。
评论太长。我想你可以看看参数的名称。所以基本上你只需从你的 Activity 查询中删除 A.Activity_ID
。但是你还需要在你的主查询中做一些不同的事情(假设你正在过滤正在传递的 A.Activity_ID
值)。
您的 Activity 查询如下所示:
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])
注意:这可能会影响性能。