OrderBy MDX查询?

时间:2015-03-25 13:23:49

标签: ssas mdx olap

这是我的MDX查询。

select
{
    [Measures].[Quantity],
    [Measures].[Net Sales]
}
on columns,
NON EMPTY
{(
    [Products].[Item Description].children,
    [Calendar].[Date].[Date]
)}
on rows
from
(
select 
{
    [Calendar].[Date].&[2015-03-23T00:00:00],
    [Calendar].[Date].&[2015-03-22T00:00:00],
    [Calendar].[Date].&[2015-03-21T00:00:00]
}
ON columns
FROM [SalesReport])

按预期方式提供销售记录的数量和净销售额。我们现在需要对其进行排序以获得具有最高数量的项目。换句话说,我们正在寻求应用“降序”。在这里排序。

我尝试了所有订单方法,这给了我错误。能帮我完成我的愿望吗?

2 个答案:

答案 0 :(得分:1)

你试过以下吗?

select
{
    [Measures].[Quantity],
    [Measures].[Net Sales]
}
on columns,
NON EMPTY
ORDER((
    [Products].[Item Description].children,
    [Calendar].[Date].[Date]
), [Measures].[Quantity], DESC)
on rows
from
(
select 
{
    [Calendar].[Date].&[2015-03-23T00:00:00],
    [Calendar].[Date].&[2015-03-22T00:00:00],
    [Calendar].[Date].&[2015-03-21T00:00:00]
}
ON columns
FROM [SalesReport])

第二次尝试[工作解决方案]

select
{
    [Measures].[Quantity],
    [Measures].[Net Sales]
}
on columns,
NON EMPTY
ORDER((
    [Products].[Item Description].children    
), [Measures].[Quantity], DESC)
*[Calendar].[Date].[Date]
on rows
from
(
select 
{
    [Calendar].[Date].&[2015-03-23T00:00:00],
    [Calendar].[Date].&[2015-03-22T00:00:00],
    [Calendar].[Date].&[2015-03-21T00:00:00]
}
ON columns
FROM [SalesReport])

答案 1 :(得分:0)

如果您想进一步订购内部组,您可以这样做:

SELECT
{
    [Measures].[Quantity],
    [Measures].[Net Sales]
}
ON 0,
NON EMPTY

  GENERATE(
  ORDER(
  [Products].[Item Description].children 
  ,[Measures].[Quantity], BDESC)
  ,
  ORDER(
  [Products].[Item Description].CURRENTMEMBER  //<< possibly [Products].CURRENTMEMBER
  *
  {[Calendar].[Date].[Date].Members}
  ,[Measures].[Quantity], BDESC))

ON 1
FROM
(
  SELECT
  {
    [Calendar].[Date].&[2015-03-23T00:00:00],
    [Calendar].[Date].&[2015-03-22T00:00:00],
    [Calendar].[Date].&[2015-03-21T00:00:00]
  }
  ON 0
  FROM [SalesReport]
);