我有一个查询,我需要为记录提取最新的风险评估等级,但需要对查询中的所有记录执行此操作。我有MS SSRS Report Builder (V3)
作为访问此数据的唯一方法,并且无权修改供应商提供的基础多维数据集。
我的基本MDX可以提取所需的数据如下:
SELECT
NON EMPTY {
[Measures].[No of Investigations]
} ON COLUMNS,
NON EMPTY { (
[Investigation Indicators and Text Fields].[Investigation Reference Number].[Investigation Reference Number].ALLMEMBERS *
[Risk Assessment Rating].[Risk Rating].[Risk Rating].ALLMEMBERS *
[Risk Assessment Completed Date].[Date].[Date].ALLMEMBERS *
[Risk Assessment Completed Time].[Time HHMM].[Time HHMM].ALLMEMBERS
) } ON ROWS
FROM [Investigation]
让我的日期和时间需要连接。我已将其作为计算字段进行了实现,但我无法测试最大值,因为它在使用聚合函数时给出了错误。
是否有人能够通过MDX
声明或随后向我提供有关如何执行此操作的任何想法。理想情况下,我希望能够以两种方式创建结果 - 一个包含所有记录,一个标记显示哪个是最新评估,另一个只通过MDX
拉回子集。
答案 0 :(得分:0)
(未经测试)有兴趣知道这是否有帮助?
WITH SET [X] AS
TAIL(
NONEMPTY(
{[Risk Assessment Completed Date].[Date].[Date].ALLMEMBERS *
[Risk Assessment Completed Time].[Time HHMM].[Time HHMM].ALLMEMBERS}
,{([Measures].[No of Investigations])}
)
)
SELECT
NON EMPTY {
[Measures].[No of Investigations]
} ON COLUMNS,
NON EMPTY { (
[Investigation Indicators and Text Fields].[Investigation Reference Number].[Investigation Reference Number].ALLMEMBERS *
[Risk Assessment Rating].[Risk Rating].[Risk Rating].ALLMEMBERS *
[X]
) } ON ROWS
FROM [Investigation]
答案 1 :(得分:0)
我认为
SELECT
NON EMPTY {
[Measures].[No of Investigations]
} ON COLUMNS,
NON EMPTY
[Investigation Indicators and Text Fields].[Investigation Reference Number].[Investigation Reference Number].ALLMEMBERS
*
Tail(
NonEmpty(
[Risk Assessment Completed Date].[Date].[Date].MEMBERS
*
[Risk Assessment Completed Time].[Time HHMM].[Time HHMM].MEMBERS
,
{ [Investigation Indicators and Text Fields].[Investigation Reference Number].CurrentMember }
)
)
}
*
[Risk Assessment Rating].[Risk Rating].[Risk Rating].ALLMEMBERS
ON ROWS
FROM [Investigation]
应该提供你想要的东西。
NonEmpty(...)
是包含当前调查参考编号数据的所有日期/时间组合的集合。通过使用Members
代替AllMembers
,我排除了计算的日期/时间成员,通常会在最后排序,假设您不需要。假设所有非计算日期和时间成员按时间顺序排序,我们只需要包含该集合的最后一个元组的集合,这是Tail
所做的。
最后,我们使用与此参考编号,日期和时间一起出现的所有风险评级,希望只有一个。