Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 编写高级MDX查询_Sql Server 2008_Mdx - Fatal编程技术网

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个月的月份向后生成报告
有一个名为[Case Count]的度量值连接到所需的维度。不知何故,我需要从中获得经过筛选的事实,最终结果必须看起来像是行上的用户名、月数和列上的案例数,显示每个用户每个月聚合的案例数

以下是我到目前为止编写的代码:

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”
这一条没有意义。