Freigeben über


IIf (MDX)

Gibt in Abhängigkeit von einem logischen Test einen von zwei Werten zurück.

Syntax

IIf(Logical_Expression, Expression1, Expression2)

Argumente

  • Logical_Expression
    Ein gültiger logischer MDX-Ausdruck (Multidimensional Expressions), dessen Auswertung TRUE oder FALSE ergibt.

  • Expression1
    Ein gültiger MDX-Ausdruck (Multidimensional Expressions).

  • Expression2
    Ein gültiger MDX-Ausdruck (Multidimensional Expressions).

Hinweise

Der vom logischen Ausdruck angegebene Ausdruck wird nur dann zu false ausgewertet, wenn der Wert dieses Ausdrucks 0 ist. Jeder andere Wert wird zu true ausgewertet.

Wenn der angegebene logische Ausdruck zu true ausgewertet wird, gibt die IIf-Funktion den ersten Ausdruck zurück. Andernfalls gibt die Funktion den zweiten Ausdruck zurück.

Die angegebene Ausdrücke können Werte oder MDX-Objekte zurückgeben. Ferner muss der Typ der angegebenen Ausdrücke nicht übereinstimmen.

HinweisHinweis

In Microsoft SQL Server 2000 wurden von Analysis Services nur numerische und Zeichenfolgen-Rückgabewerte unterstützt, und der Typ der angegebenen Ausdrücke musste übereinstimmen. Diese Einschränkungen gelten nicht für SQL Server Analysis Services.

Die IIf-Funktion wird zum Erstellen einer Menge von Elementen basierend auf Suchkriterien nicht empfohlen. Verwenden Sie stattdessen die Filter-Funktion, um jedes Element in einer angegebenen Menge mit einem logischen Ausdruck auszuwerten und eine Teilmenge von Elementen zurückzugeben.

HinweisHinweis

Wenn die Auswertung einer der beiden Ausdrücke NULL ergibt, ist das Resultset NULL, wenn diese Bedingung erfüllt wird.

Beispiele

Die folgende Abfrage zeigt eine einfache Verwendung von IIF innerhalb einer berechneten Measure zur Rückgabe zweier unterschiedlicher Zeichenfolgen, wenn Internet Sales Amount-Measure größer bzw. kleiner als 10.000 US-Dollar ist.

WITH MEMBER MEASURES.IIFDEMO AS

IIF([Measures].[Internet Sales Amount]>10000

, "Sales Are High", "Sales Are Low")

SELECT {[Measures].[Internet Sales Amount],MEASURES.IIFDEMO} ON 0,

[Date].[Date].[Date].MEMBERS ON 1

FROM [Adventure Works]

Sehr häufig wird IIF zur Fehlerbehandlung bei „Division durch Null“ innerhalb von berechneten Measures eingesetzt wie im folgenden Beispiel:

WITH

//Returns 1.#INF when the previous period contains no value

//but the current period does

MEMBER MEASURES.[Previous Period Growth With Errors] AS

([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))

/

([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)

,FORMAT_STRING='PERCENT'

//Traps division by zero and returns null when the previous period contains

//no value but the current period does

MEMBER MEASURES.[Previous Period Growth] AS

IIF(([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)=0,

NULL,

([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))

/

([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)

),FORMAT_STRING='PERCENT'

SELECT {[Measures].[Internet Sales Amount],MEASURES.[Previous Period Growth With Errors], MEASURES.[Previous Period Growth]} ON 0,

DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004],

[Date].[Calendar].[Date])

ON 1

FROM [Adventure Works]

WHERE([Product].[Product Categories].[Subcategory].&[26])

Im folgenden Beispiel gibt IIF eine von zwei Mengen innerhalb der Generate-Funktion zum Erstellen einer komplexen Menge Tupeln auf der ROWS-Achse zurück:

SELECT {[Measures].[Internet Sales Amount]} ON 0,

//If Internet Sales Amount is zero or null

//returns the current year and the All Customers member

//else returns the current year broken down by Country

GENERATE(

[Date].[Calendar Year].[Calendar Year].MEMBERS

, IIF([Measures].[Internet Sales Amount]=0,

{([Date].[Calendar Year].CURRENTMEMBER, [Customer].[Country].[All Customers])}

, {{[Date].[Calendar Year].CURRENTMEMBER} * [Customer].[Country].[Country].MEMBERS}

))

ON 1

FROM [Adventure Works]

WHERE([Product].[Product Categories].[Subcategory].&[26])

Schließlich wird in diesem Beispiel gezeigt, wie PLAN-Hinweise verwendet werden:

WITH MEMBER MEASURES.X AS

IIF(

[Measures].[Internet Sales Amount]=0

, NULL

, (1/[Measures].[Internet Sales Amount]) HINT EAGER)

SELECT {[Measures].x} ON 0,

[Customer].[Customer Geography].[Country].MEMBERS ON 1

FROM [Adventure Works]

Siehe auch

Verweis