通过乘法测量MDX ORDER

时间:2015-02-24 06:57:13

标签: mdx

假设我有下一个MDX查询

select 
{
   [Measures].[Measure1],
   [Measures].[Measure2],
} on columns,
{   
   ORDER([Dim].Children, [Measures].[Measure1], desc)
} on rows
from [Cube]

选择两个度量并按第一个排序。 如何按两个度量排序,按Measure1排序,然后按Measure2排序?

2 个答案:

答案 0 :(得分:1)

试试这个:

select 
{
   [Measures].[Measure1],
   [Measures].[Measure2]
} on columns,
{   
   ORDER(ORDER([Dim].Children, [Measures].[Measure1], desc), [Measures].[Measure2], DESC)
} on rows
from [Cube]

编辑:无法使用的原因是因为需要更改措施的顺序。以下是我认为发生的事情:

控制首先进入内部集合,并按内部度量排序。然后返回的该集合按外部度量排序。总体效果是外部测量取代了内部测量的排序。因此,如果我们想要按m1-> m2进行排序,那么m1需要是外部度量而m2是内部度量。

答案 1 :(得分:0)

这适用于我的AdvWrks:

SELECT 
  {
    [Measures].[Reseller Order Quantity]
   ,[Measures].[Reseller Sales Amount]
  } ON 0
 ,Order
  (
    Order
    (
      [Product].[Product].[Product].MEMBERS
     ,[Measures].[Reseller Sales Amount]
     ,BDESC
    )
   ,[Measures].[Reseller Order Quantity]
   ,BDESC
  ) ON 1
FROM [Adventure Works];

也许你需要交换订单并使用BDESC

SELECT 
  {
    [Measures].[Measure1]
   ,[Measures].[Measure2]
  } ON COLUMNS
 ,{
    Order
    (
      Order
      (
        [Dim].Children
       ,[Measures].[Measure2]
       ,BDESC
      )
     ,[Measures].[Measure1]
     ,BDESC
    )
  } ON ROWS
FROM [Cube];