Instruction CASE (MDX)
Mis à jour : 12 décembre 2006
Permet de retourner des valeurs spécifiques à partir de plusieurs comparaisons sous certaines conditions. Il existe deux types d'instructions CASE :
- Une instruction CASE simple qui compare une expression à un jeu d'expressions simples pour retourner des valeurs spécifiques.
- Une instruction CASE recherchée qui évalue un jeu d'expressions booléennes pour retourner des valeurs spécifiques.
Syntaxe
Simple Case Statement
CASE [input_expression]
WHEN when_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
Search Case Statement
CASE
WHEN Boolean_expression THEN else_result_expression
[...n]
[ELSE else_result_expression]
END
Arguments
- input_expression
Expression MDX (Multidimensional Expressions) résolue en valeur scalaire.
- when_expression
Une valeur scalaire spécifique, par rapport à laquelle input_expression est évalué, retourne la valeur scalaire de else_result_expression lorsqu'elle prend la valeur True.
- when_true_result_expression
Valeur scalaire retournée lorsque la clause WHEN prend la valeur True.
- else_result_expression
Valeur scalaire retournée si aucune des clauses WHEN ne prend la valeur True.
- Boolean_expression
Expression MDX qui prend une valeur scalaire.
Notes
S'il n'existe aucune clause ELSE et si toutes les clauses WHEN prennent la valeur false, le résultat est une cellule vide.
Expression CASE simple
MDX évalue une expression CASE simple en résolvant l'argument input_expression à une valeur scalaire. Cette valeur scalaire est ensuite comparée à la valeur scalaire de l'argument when_expression. En cas de correspondance entre deux valeurs scalaires, l'instruction CASE retourne la valeur de l'argument when_expression. Si aucune correspondance n'est relevée, la clause WHEN suivante est évaluée. Si toutes les clauses WHEN prennent la valeur False, la valeur de la clause ELSE (le cas échéant) est retournée.
Dans l'exemple ci-dessous, la mesure Reseller Order Count (nombre de commandes du revendeur) est évaluée par rapport à plusieurs clauses WHEN et retourne un résultat fondé sur la valeur de la mesure Reseller Order Count pour chaque année. Pour les valeurs de la mesure Reseller Order Count qui ne correspondent pas à une valeur scalaire spécifiée dans un argument when_expression au sein d'une clause WHEN, c'est la valeur scalaire de l'argument else_result_expression qui est retournée.
WITH MEMBER [Measures].x AS
CASE [Measures].[Reseller Order Count]
WHEN 0 THEN 'NONE'
WHEN 1 THEN 'SMALL'
WHEN 2 THEN 'SMALL'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'MEDIUM'
WHEN 5 THEN 'LARGE'
WHEN 6 THEN 'LARGE'
ELSE 'VERY LARGE'
END
SELECT Calendar.[Calendar Year] on 0
, NON EMPTY [Geography].[Postal Code].Members ON 1
FROM [Adventure Works]
WHERE [Measures].x
Expression CASE recherchée
Pour procéder à des évaluations plus complexes à l'aide de l'expression CASE, optez pour l'expression CASE recherchée. Cette variante de l'expression de recherche vous permet d'évaluer si une expression d'entrée s'inscrit dans une plage de valeurs. MDX évalue les clauses WHEN dans l'ordre de leur apparition dans l'instruction CASE.
Dans l'exemple ci-après, la mesure Reseller Order Count est évaluée par rapport à l'argument Boolean_expression spécifié pour chacune des nombreuses clauses WHEN. Un résultat basé sur la valeur de la mesure Reseller Order Count pour chaque année est retourné. Du fait que les clauses WHEN sont évaluées dans l'ordre dans lequel elles apparaissent, toutes les valeurs supérieures à 6 peuvent aisément être affectées à la valeur « VERY LARGE » sans avoir à spécifier explicitement chaque valeur. Pour les valeurs de la mesure Reseller Order Count non définies dans une clause WHEN, la valeur scalaire retournée est celle de l'argument else_result_expression.
WITH MEMBER [Measures].x AS
CASE
WHEN [Measures].[Reseller Order Count] > 6 THEN 'VERY LARGE'
WHEN [Measures].[Reseller Order Count] > 4 THEN 'LARGE'
WHEN [Measures].[Reseller Order Count] > 2 THEN 'MEDIUM'
WHEN [Measures].[Reseller Order Count] > 0 THEN 'SMALL'
ELSE "NONE"
END
SELECT Calendar.[Calendar Year] on 0,
NON EMPTY [Geography].[Postal Code].Members on 1
FROM [Adventure Works]
WHERE [Measures].x
Voir aussi
Autres ressources
Instructions de script MDX (MDX)
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
17 juillet 2006 |
|
12 décembre 2006 |
|