使用MDX如何按月排序

时间:2016-02-10 09:52:18

标签: mdx

我如何按月排序。现在排序是合理的。这是不正确的。我希望在四月份之前的一月 - 而不是另一种方式:)

我在报告构建器3.0中工作,并尝试了这个(=格式(Fields!Måned.Value,“MM”)作为一个名为monthsort的计算成员,但它非常有效。(Måned=丹麦月份)。

我有以下MDX代码:

WITH 
  SET [prodSet] AS 
    [Borger].[Anonym Borgernøgle DPR].[Anonym Borgernøgle DPR].ALLMEMBERS
  SET [prodDtSet] AS 
    NonEmpty
    (
        [prodSet]
      * 
        {
            ( [SundhedOgOmsorg - Ydelse].[Ydelse].[Ydelse].ALLMEMBERS *
              [Kalender].[År].[År].ALLMEMBERS * 
              [Kalender].[Måned].[Måned].ALLMEMBERS )
        }
     ,[Measures].[Antal unikke brugere - Visiteret Tid]
    ) 
  SET [prodDtSetFiltered] AS 
    Filter
    (
      [prodDtSet]
     ,
        (NOT 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 1).Item(0)
          IS 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 2).Item(0))
      OR 
        [prodDtSet].CurrentOrdinal = 1
    ) 
SELECT 
  { [Measures].[Antal unikke brugere - Visiteret Tid] } ON 0
 ,[prodDtSetFiltered] ON 1
FROM 
(
  SELECT 
    {
      [SundhedOgOmsorg - Ydelse].[Ydelse].&[12.1 Hjemmetrænerforløb]
     ,[SundhedOgOmsorg - Ydelse].[Ydelse].&[12.2 Komb. Hjemmetræner & Terapeutforløb]
     ,[SundhedOgOmsorg - Ydelse].[Ydelse].&[12.3 Komplekse Rehabiliteringsforløb]
     ,[SundhedOgOmsorg - Ydelse].[Ydelse].&[12.7. hverdagsrehab. revis.gr. m. tp.]
    } ON COLUMNS
  FROM 
  (
    SELECT 
      {[SundhedOgOmsorg - Modul].[Modul].&[Hjemmehjælp]} ON COLUMNS
    FROM [FrbLis]
  )
)
WHERE 
  [SundhedOgOmsorg - Modul].[Modul].&[Hjemmehjælp]

2 个答案:

答案 0 :(得分:1)

您可以尝试拉

MEMBER [Measures].[MånedSortKey] AS [Kalender].[Måned].CURRENTMEMBER.PROPERTIES('KEY')

您也可以使用 MEMBER_KEY 代替 PROPERTIES('KEY')

在报告中按它排序。 (我假设您的Key是一个Date或Int,它应该比字符串更可排序)

(...)
MEMBER [Measures].[MånedSortKey] AS [Kalender].[Måned].CURRENTMEMBER.PROPERTIES('KEY')
SELECT 
    { 
        [Measures].[Antal unikke brugere - Visiteret Tid],
        [Measures].[MånedSortKey] 
    } ON 0,
    [prodDtSetFiltered] ON 1
FROM (
(...)

答案 1 :(得分:0)

您可能需要在脚本中使用以下函数:

Orderhttps://msdn.microsoft.com/en-us/library/ms145587.aspx

要用作参数的<numeric expression>将是月成员的.membervalue属性。

采用mxix衡量标准(我使用了成员价值而非关键字 - 尽管两者都有效)您应该能够在mdx内强制执行订单:

WITH 
  MEMBER [Measures].[MånedSortKey] AS 
    [Kalender].[Måned].CURRENTMEMBER.membervalue
  SET [prodSet] AS 
    [Borger].[Anonym Borgernøgle DPR].[Anonym Borgernøgle DPR].ALLMEMBERS
  SET [prodDtSet] AS 
    NonEmpty
    (
        [prodSet]
      * 
        {
            ( [SundhedOgOmsorg - Ydelse].[Ydelse].[Ydelse].ALLMEMBERS *
              [Kalender].[År].[År].ALLMEMBERS * 
              [Kalender].[Måned].[Måned].ALLMEMBERS )
        }
     ,[Measures].[Antal unikke brugere - Visiteret Tid]
    ) 
  SET [prodDtSetFiltered] AS 
    Filter
    (
      [prodDtSet]
     ,
        (NOT 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 1).Item(0)
          IS 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 2).Item(0))
      OR 
        [prodDtSet].CurrentOrdinal = 1
    ) 
SELECT 
  { [Measures].[Antal unikke brugere - Visiteret Tid] } ON 0
 ,ORDER(
   [prodDtSetFiltered],
   [Measures].[MånedSortKey],
   BDESC
  ) ON 1
FROM 
...
...