Sql server 2008 编写高级MDX查询
我使用的是一个多维多维多维数据集,有很多维度和度量,用于获取数据,以便在Sql server 2008 编写高级MDX查询,sql-server-2008,mdx,Sql Server 2008,Mdx,我使用的是一个多维多维多维数据集,有很多维度和度量,用于获取数据,以便在SSRS中创建报告 以下是任务文本: 用户名-包括维度[Group]中与[users]维度连接的来自&[A组]和&[B组]的用户 计数,其中[案例操作]=“A”或[案例操作]=“B”和[原因]=“R” (包括来自&[A组]和&[B组]的所有成员) 排除[案例行动]=“A”和[原因]=“R”或[案例行动]=“S”的案例 从报告月向后计算报告期和13个月滚动期内的案例 报告日期可以是任何有效日期,不能是将来的日期 如果报告日期
SSRS
中创建报告
以下是任务文本:
- 用户名-包括维度[Group]中与[users]维度连接的来自&[A组]和&[B组]的用户李>
- 计数,其中[案例操作]=“A”或[案例操作]=“B”和[原因]=“R” (包括来自&[A组]和&[B组]的所有成员)李>
- 排除[案例行动]=“A”和[原因]=“R”或[案例行动]=“S”的案例李>
- 从报告月向后计算报告期和13个月滚动期内的案例
- 报告日期可以是任何有效日期,不能是将来的日期李>
- 如果报告日期不是月末日期,则将生成上个月的报告,以及从上个月到下个月报告中可用的13个月滚动期数据李>
- 如果报告日期是月末日期,则将从指定的13个月的月份向后生成报告
WITH
SET [Report Period] AS
Generate
(
ParallelPeriod
(
[Dim Date].[Calendar Hierarchy].[Calendar Month]
,13
,StrToMember
("[Dim Date].[Calendar Hierarchy].[Calendar Date].[2013-08-30]"
,CONSTRAINED
).Parent
)
:
StrToMember
("[Dim Date].[Calendar Hierarchy].[Calendar Date].[2014-08-30]"
,CONSTRAINED
).Parent
,{[Dim Date].[Calendar Hierarchy].CurrentMember}
)
SET [User Name] AS
Exists
(
[Dim Alert Action Assigned To User].[Group Hierarchy].[User Name].MEMBERS
,
[Report Period]
*
{
[Dim Group].[Group Name].&[QA Group]
,[Dim Group].[Group Name].&[Supervisor Group]
}
)
MEMBER [Measures].[Cases] AS
CoalesceEmpty
(
Aggregate
(
{
[Dim Case Action].[Action Case Alias].&[A]
,[Dim Case Action].[Action Case Alias].&[S]
}
,[Measures].[Case Count]
)
,0
)
SELECT
{[Report Period] * [Measures].[Cases]} ON 0
,{[User Name]} ON 1
FROM [CaseAlerts];
结果必须如下所示:
在行->用户名上
在列->月份和当前月份的案例计数中。以下两个条件似乎相互矛盾
Exclude cases where [Case Action] = "A" and [Reason] = "R" or [Case Action] = "S";
Count where [Case Action] = "A" or [Case Action] = "B" and [Reason] = "R" (include all member from &[A Group] and &[B Group]);
我将忽略第一个条件
应在前端检查以下情况
Report date can be any valid date and can not be a future date.
至于其他情况,请检查下面的MDX是否工作
WITH
SET CurrentMonth AS
EXISTS(
[Dim Date].[Calendar Hierarchy].[Calendar Month],
StrToMember
("[Dim Date].[Calendar Hierarchy].[Calendar Date].[2013-08-30]"
,CONSTRAINED
)
)
SET [Report Period] AS
IIF([Dim Date].[Calendar Hierarchy].CurrentMember IS NOT CurrentMonth.LastChild
,
{CurrentMonth.lag(14).lastChild
:
CurrentMonth.lag(1).lastChild}--last month's last date
,
{
ParallelPeriod(
[Dim Date].[Calendar Hierarchy].[Calendar Month]
,13
,
StrToMember
("[Dim Date].[Calendar Hierarchy].[Calendar Date].[2013-08-30]"
,CONSTRAINED
)
)
:
StrToMember
("[Dim Date].[Calendar Hierarchy].[Calendar Date].[2013-08-30]"
,CONSTRAINED
)
}
)
SET [User Name] AS
Exists
(
[Dim Alert Action Assigned To User].[Group Hierarchy].[User Name].MEMBERS
,
[Report Period]
*
{
[Dim Group].[Group Name].&[QA Group]
,[Dim Group].[Group Name].&[Supervisor Group]
}
)
MEMBER [Measures].[Cases] AS
CoalesceEmpty
(
Aggregate
(
({
[Dim Case Action].[Action Case Alias].&[A]
,[Dim Case Action].[Action Case Alias].&[S]
}, [Dim Case Action].[Reason].&[R])
,[Measures].[Case Count]
)
,0
)
SELECT
{[Report Period] * [Measures].[Cases]} ON 0
,{[User Name]} ON 1
FROM [CaseAlerts];
你已经写了什么?(除非我们能看到您当前的代码,否则我不确定您会得到多少帮助)为什么还要麻烦
strotmember
?你不能直接使用会员吗?这会被参数化吗?@whytheq-因为她使用的是SSRS,它可以识别并返回字符串@Sourav_Agasti不必担心Sourav-对我来说,脚本看起来可以简化很多,不幸的是,我今天在与时间作斗争……也许你可以帮忙。排除[Case Action]=“a”和[Reason]=“R”或[案例操作]=“S”
这一条没有意义。