2016-08-25 5 views
1

T-SQLを使用してMDX for OLAPキューブにクエリを作成したので、2番目の列でデータをソートする必要があります。デフォルトでは、テーブルは最初の列でソートされます。どのように私は "収入"値で並べ替えることができますか?これは私のクエリです:T-SQLでMDXでORDER関数を使用

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]; 

はところで私は、日付によるフィルタ機能を使用して、私は「収入」値によって追加のソート機能に問題があるので、それは少し私のクエリを複雑。

+0

あなたのスクリプトを生成したツールはありますか? Excel? (solve_ordersはデフォルトの解決順序ですが、xlは通常は気にしませんが、ボイラープレートのディメンションのプロパティは通常xlスクリプトに含まれています)。またはそれはプロファイラから取られます – whytheq

答えて

1

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]) 
+0

はい、それは動作します。どうもありがとうございました。私は初心者のMDXで情報を追加するのを忘れていました。「Income」という名前は「Covers SUM」のエイリアスです。どうも。 – kenzolek

関連する問題