Freigeben über


Order (MDX)

Aktualisiert: 17. Juli 2006

Ordnet die Elemente einer angegebenen Menge an, wobei die Hierarchie optional beibehalten wird oder nicht.

Syntax

Numeric expression syntax
Order(Set_Expression, Numeric_Expression 
[ , { ASC | DESC | BASC | BDESC } ] )

String expression syntax
Order(Set_Expression, String_Expression 
[ , { ASC | DESC | BASC | BDESC } ] )

Argumente

  • Set_Expression
    Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Menge zurückgibt.
  • Numeric_Expression
    Ein gültiger numerischer Ausdruck, bei dem es sich in der Regel um einen MDX-Ausdruck (Multidimensional Expressions) für Zellenkoordinaten handelt, die eine Zahl zurückgeben.
  • String_Expression
    Ein gültiger Zeichenfolgenausdruck, bei dem es sich in der Regel um einen gültigen MDX-Ausdruck (Multidimensional Expressions) für Zellenkoordinaten handelt, der eine als Zeichenfolge ausgedrückte Zahl zurückgibt.

Hinweise

Die Order-Funktion kann entweder hierarchisch sein (angegeben mit dem Flag ASC oder DESC) oder nicht hierarchisch (angegeben mit dem Flag BASC oder BDESC , wobei B für "Break hierarchy" oder "Hierarchie durchbrechen" steht). Wenn ASC oder DESC angegeben wird, ordnet die Order-Funktion zunächst die Elemente entsprechend ihrer Position in der Hierarchie an und sortiert dann jede Ebene. Wenn BASC oder BDESC angegeben wird, ordnet die Order-Funktion die Elemente in der Menge ungeachtet der Hierarchie an. Wenn kein Flag angegeben wird, ist ASC die Standardeinstellung.

Beispiele:

Im folgenden Beispiel werden die Anzahl der Bestellungen des Wiederverkäufers für das [Sales Territory].[Northwest]-Element sowie alle vorausgehenden Elemente dieses Elements aus dem Adventure Works-Cube zurückgegeben. Die Order-Funktion ordnet die Menge, die das [Sales Territory].[Northwest]-Element und seinen vorausgehenden Elementen enthält, für die ROWS-Achse neu. Die Order-Funktion sortiert die Menge hierarchisch vom obersten zum untersten Element entsprechend der [Sales Territory]-Hierarchie.

SELECT
    Measures.[Reseller Order Count] ON COLUMNS,
    Order(
        Ascendants(
            [Sales Territory].[Sales Territory].[Northwest]
        ),
        DESC
    ) ON ROWS
FROM
    [Adventure Works]

Im folgenden Beispiel wird das Reseller Sales-Measure für die fünf bestverkauften Produktunterkategorien unabhängig von der Hierarchie basierend auf Reseller Gross Profit zurückgegeben. Die Subset-Funktion wird verwendet, um nach dem Sortieren des Ergebnisses mithilfe der Order-Funktion nur die ersten 5 Mengen aus dem Ergebnis zurückzugeben.

SELECT Subset
   (Order 
      ([Product].[Product Categories].[SubCategory].members
         ,[Measures].[Reseller Gross Profit]
         ,BDESC
      )
   ,0
   ,5
   ) ON 0
FROM [Adventure Works]

Im folgenden Beispiel wird die Rank-Funktion verwendet, um die Elemente der City-Hierarchie in eine Rangreihenfolge auf der Grundlage des Reseller Sales Amount-Measures zu bringen und sie anschließend in der Rangreihenfolge anzuzeigen. Durch die Verwendung der Order-Funktion zum Vorsortieren der Menge der Elemente der City-Hierarchie wird die Sortierung nur ein einziges Mal durchgeführt. Anschließend folgt ein linearer Scan, nach dessen Abschluss die Elemente in der Sortierreihenfolge angezeigt werden.

WITH 
SET OrderedCities AS Order
   ([Geography].[City].[City].members
   , [Measures].[Reseller Sales Amount], BDESC
   )
MEMBER [Measures].[City Rank] AS Rank
   ([Geography].[City].CurrentMember, OrderedCities)
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]}  ON 0 
,Order
   ([Geography].[City].[City].MEMBERS
   ,[City Rank], ASC)
    ON 1
FROM [Adventure Works]

Im folgenden Beispiel wird die Anzahl der eindeutigen Produkte in der Menge zurückgegeben. Dabei wird die Order-Funktion verwendet, um die nicht leeren Tupel vor Verwendung der Filter-Funktion zu sortieren. Die CurrentOrdinal-Funktion wird zum Vergleichen und Ausschließen von Gleichrangigkeit verwendet.

WITH MEMBER [Measures].[PrdTies] AS Count
   (Filter
      (Order
        (NonEmpty
          ([Product].[Product].[Product].Members
          , {[Measures].[Reseller Order Quantity]}
          )
       , [Measures].[Reseller Order Quantity]
       , BDESC
       ) AS OrdPrds
    , (OrdPrds.CurrentOrdinal < OrdPrds.Count 
       AND [Measures].[Reseller Order Quantity] = 
          ( [Measures].[Reseller Order Quantity]
            , OrdPrds.Item
               (OrdPrds.CurrentOrdinal
               )
            )
         )
         OR (OrdPrds.CurrentOrdinal > 1 
            AND [Measures].[Reseller Order Quantity] = 
               ([Measures].[Reseller Order Quantity]
               , OrdPrds.Item
                  (OrdPrds.CurrentOrdinal-2)
                )
             )
          )
       )
SELECT {[Measures].[PrdTies]} ON 0
FROM [Adventure Works]

Siehe auch

Verweis

MDX-Funktionsreferenz (MDX)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. Juli 2006

Geänderter Inhalt:
  • Syntax und Argumente wurden zur Verdeutlichung aktualisiert.
  • Aktualisierte Beispiele wurden hinzugefügt.