我找不到方法,如何对查询进行排序,这是一个简单的查询:
SELECT {[Measures].[IB]}
ON COLUMNS,
{[Dim_Product_Models_new].[PLA].members } *
{[Dim Dates_new].[Date Full].&[2013-02-01]:[Dim Dates_new].[Date Full].&[2014-01-01]}
ON ROWS
FROM [cub_dashboard_spares]
根据想法,我会在12个月内得到6个PLA的结果(总共72行),但它会按照字母顺序排列在PLA上。
我需要的是根据上个月的衡量标准对PLA进行排序(在本案例中为2014-01-01)。
是否有任何方法可以执行此任务,以便保持灌浆(PLAs,2013-02至2013-12的日期),但只有我的PLA的顺序不同。 (上个月最高衡量标准的PLA将是第一名,依此类推)
非常感谢您提供任何帮助
答案 0 :(得分:1)
交叉连接上的订单功能应保留第一组的初始顺序,因此反转元组的顺序将完成工作:
SELECT
{
[Measures].[IB]
} ON COLUMNS,
order(
{[Dim Dates_new].[Date Full].&[2013-02-01]:[Dim Dates_new].[Date Full].&[2014-01-01]} *
{[Dim_Product_Models_new].[PLA].members } ,
[Measures].[IB],
desc
) ON ROWS
FROM [cub_dashboard_spares]
如果要保留列标签的外观,可以使用AW框中以下示例中的generate函数:
SELECT
{[Measures].[Internet Sales Amount]} ON 0
,Generate
(
{[Customer].[Country].&[Australia]:[Customer].[Country].&[United Kingdom]}
,(
Order
(
[Date].[Calendar Year].[Calendar Year].MEMBERS
,(
[Customer].[Country].CurrentMember
,[Measures].[Internet Sales Amount]
)
,DESC
)
,[Customer].[Country].CurrentMember
)
) ON 1
FROM [Adventure Works];
菲利普,
答案 1 :(得分:1)
使用Order
函数将排序集放在行上。如果要在每个层次结构级别内进行排序,但仍希望在子级之前获取父级(如单个属性成员之前的ALL),则此函数的第三个参数为DESC
,如果您愿意,则为BDESC
在所有级别排序。
SELECT {[Measures].[IB]}
ON COLUMNS,
Order({[Dim_Product_Models_new].[PLA].members },
([Measures].[IB], [Dim Dates_new].[Date Full].&[2014-01-01]),
DESC)
*
{[Dim Dates_new].[Date Full].&[2013-02-01]:[Dim Dates_new].[Date Full].&[2014-01-01]}
ON ROWS
FROM [cub_dashboard_spares]