我正在努力想出这个,并希望那里的人可以提供帮助。
我有一份SSRS(2008)报告,它直接连接到SSAS OLAP Cube。我有5个不同的列,每个列显示不同的度量,按“管理器”维度划分。我还在SSRS中有参数化下拉列表,可根据各种事物过滤数据。
这是让我达到这一点的代码:
SELECT
NON EMPTY{
[Measures].[Metric A]
,[Measures].[Metric B]
,[Measures].[TMetric C]
,[Measures].[Metric D]
,[Measures].[Metric E]
} ON COLUMNS
,NON EMPTY{
([Ops Hierarchy].[Manager].[Manager].ALLMEMBERS )
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM
(
SELECT
(
STRTOSET(@CompleteDateCalendar, CONSTRAINED) ) ON COLUMNS
FROM
(
SELECT
(
STRTOSET(@City, CONSTRAINED) ) ON COLUMNS
FROM
(
SELECT
(
STRTOSET(@Region, CONSTRAINED) ) ON COLUMNS
FROM
(
SELECT
(
STRTOSET(@Country, CONSTRAINED) ) ON COLUMNS
FROM
[CUBE]
)
)
)
)
WHERE
(
IIF( STRTOSET(@Country, CONSTRAINED).Count = 1, STRTOSET(@Country, CONSTRAINED)
, [Ops Hierarchy].[Division Name].currentmember )
, IIF( STRTOSET(@Region, CONSTRAINED).Count = 1, STRTOSET(@Region, CONSTRAINED)
, [Ops Hierarchy].[Region Name].currentmember )
, IIF( STRTOSET(@City, CONSTRAINED).Count = 1, STRTOSET(@City, CONSTRAINED)
, [Ops Hierarchy].[System Name].currentmember )
, IIF( STRTOSET(@CompleteDateCalendar, CONSTRAINED).Count = 1, STRTOSET(@CompleteDateCalendar, CONSTRAINED)
, [CompleteDate].[Calendar].currentmember )
)
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
当然,SSRS会自动为每个@parameter创建相应的下拉列表。
现在,我需要帮助:
我有新要求为每个指标添加“排名”列。因此,例如,在“度量标准A”列旁边,将出现另一个名为“度量标准A排名”的列,该列将该行上的管理者与报告中显示的其他管理者进行排名(基于在下拉菜单)。
现在,我知道我可以添加:
WITH
SET [OrderedSet1] AS ORDER(FILTER([Ops Hierarchy].[Manager].MEMBERS,[Measures].[Metric A] <> NULL),[Measures].[Metric A],BASC)
MEMBER [Measures].[Metric A Rank] AS RANK([Ops Hierarchy].[Manager].CurrentMember,[OrderedSet1])
SET [OrderedSet2] AS ORDER(FILTER([Ops Hierarchy].[Manager].MEMBERS,[Measures].[Metric B] <> NULL),[Measures].[Metric B],BASC)
MEMBER [Measures].[Metric B Rank] AS RANK([Ops Hierarchy].[Manager].CurrentMember,[OrderedSet2])
等,到MDX查询的顶部,然后在我的select语句中引用[Measures]。[Metric A Rank]和[Measures]。[Metric B Rank]。
我不知道该怎么做是使用SSRS下拉列表过滤集合,以便我只对报告中显示的内容进行排名。
例如,如果有人在SSRS中选择了Country =“USA”,Region =“South”,City =“Atlanta”和CompleteDate =“Jan 2012”,并且我将度量A排在OrderedSet1之后,那么我只想要展示2012年1月每位经理如何与亚特兰大的其他经理人竞争。
如何使用SSRS下拉菜单“参数化”WITH子句中的集合,以便我只针对用户选择的子集进行排名?
提前感谢您的帮助!
答案 0 :(得分:0)
在Set声明中,您可以使用
SET [OrderedSet1] AS ORDER(FILTER([Ops Hierarchy].[Manager].MEMBERS*
[Ops Hierarchy].[System Name].currentmember
,[Measures].[Metric A] <> NULL),[Measures].[Metric A],BASC)