在带有 T-SQL 的 MDX 中使用 ORDER 函数

Using ORDER function in MDX with T-SQL

我使用 T-SQL 在 MDX 中为 OLAP 多维数据集创建了查询,现在我需要按第二列对数据进行排序。默认 table 按第一列排序。如何按 "Income" 值排序?这是我的查询:

WITH 
  MEMBER [Measures].[DateFilter] AS 
    Cdate([Date.H_Date].CurrentMember.MemberValue) 
  MEMBER [Measures].[Average] AS 
    [Measures].[Price] / [Measures].[Covers SUM] 
SELECT 
  {
    [Measures].[Average]
   ,[Measures].[Covers SUM]
   ,[Measures].[Price]
  }
  DIMENSION PROPERTIES 
    [MEMBER_UNIQUE_NAME]
   ,[MEMBER_CAPTION]
   ON COLUMNS
 ,NON EMPTY 
    Filter
    (
      NonEmpty
      (
        CrossJoin
        (
          [Date].[H_Date].[Month].ALLMEMBERS
         ,[Waiter].[WaiterName].[WaiterName].ALLMEMBERS
        )
       ,{
          [Measures].[Average]
         ,[Measures].[Covers SUM]
         ,[Measures].[Price]
        }
      )
     ,
          Dateadd
          ("m"
           ,-1
           ,Dateadd
            ("m"
             ,Datediff
              ("m"
               ,Cdate(36526)
               ,Now()
              )
             ,Cdate(36526)
            )
          )
        <= 
          [Measures].[DateFilter]
      AND 
          [Measures].[DateFilter]
        < 
          Dateadd
          ("m"
           ,0
           ,Dateadd
            ("m"
             ,Datediff
              ("m"
               ,Cdate(36526)
               ,Now()
              )
             ,Cdate(36526)
            )
          )
    )
  DIMENSION PROPERTIES 
    [MEMBER_UNIQUE_NAME]
   ,[MEMBER_CAPTION]
   ON ROWS
FROM [YouCube];

顺便说一下,我按日期使用过滤函数,这让我的查询有点复杂,所以我无法按 "Income" 值添加排序函数。

只需将 ORDER 添加到您的集合中。

ORDER(
Filter(NonEmpty(CROSSJOIN([Date].[H_Date].[Month].AllMembers,
                                                    [Waiter].[WaiterName].[WaiterName].AllMembers),
                                                    {[Measures].[Average],[Measures].[Covers SUM],[Measures].[Price]}),
                                                    DATEADD("m",-1,DATEADD("m",DATEDIFF("m",CDate(36526),NOW()),CDate(36526))) <= [Measures].[DateFilter] AND [Measures].[DateFilter] < DATEADD("m",0,DATEADD("m",DATEDIFF("m",CDate(36526),NOW()),CDate(36526)))) 
,[Measures].[Income])