227 visiteur(s) en ligne
Date actuelle : 07-05-2024, 16:57 PM Bienvenue, Visiteur ! ( Identification S'enregistrer )







 
[Résolu] [SQL Server 2k5 SSAS] Calcul Nommé
 
Note de cette discussion :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Auteur Message
dardadax Hors ligne
Informaticien qualifié
****

Messages : 585
Inscription : Sep 2007
Réputation : 1
Message : #1
[Résolu][SQL Server 2k5 SSAS] Calcul Nommé
Bonjour tout le monde !


Je ne sais pas si vous allez pouvoir m'aider, mais comme c'est toujours ici qu'on m'a le mieux répondu (et toujours en bon), autant essayer.

Pour information, je travaille sous SQL Server 2005 version Standard. Le but du calcul nommé, c'est d'avoir une colonne supplémentaire dans une table de fait nommée par exemple FAIT_Question, afin que celle-ci possède un élément agrégé plus rapidement calculé que lorsque l'on fait un membre calculé en MDX (du SQL multi dimensionnel) lorsque l'on parcourt le cube, sous excel par exemple.

La question est simple : faire des tests...

Premier test : ma valeur attendue est-elle vide ? (le NULL)
-> oui : NULL
-> non : Second test

Second Test : ma valeur attendue est-elle égale à 0 ?
-> oui : NULL
-> non : Dernier test

Dernier Test : ma valeur réelle est-elle vide ?
-> oui : NULL
-> non : réel / attendu





SELECT FAIT_Question,

IIF(
ISNULL([VALEUR_ATTENDUE]
,[DT-R8]),
NULL,

(IIF([VALEUR_ATTENDUE] == '0',
NULL ,

(IIF(
ISNULL(
[REEL],
[DT-R8]),
NULL,
[REEL]/[VALEUR_ATTENDUE])
)
))

)

AS C_TEST

FROM FAIT_Question AS FAIT_Question



Syntaxe générique :

SELECT <Table Name in Data Source>.* , <Expression> AS <Column Name> FROM <Table Name in Data Source> AS <Table Name in Data Source View>



Le IIF est la condition "IF then else" de forme IIF(condition,vrai,faux) que l'on retrouve aussi ailleurs en " condition ? vrai : faux" (sous SSIS par exemple)

L'erreur affichée par SQL Server est la suivante : "Syntaxe incorrecte vers '='."
Evidemment, j'ai testé au cas où du ='0', =0, ==0...mais non, rien n'y fait.

J'ai tenté de changer les IIF par des case sans succès

case when
ISNULL([VALEUR_ATTENDUE]
,[DT-R8]) then
NULL else

(case when [VALEUR_ATTENDUE] == '0' then
NULL else

(case when
ISNULL(
[REEL],
[DT-R8]) then
NULL else
[REEL]/[VALEUR_ATTENDUE]))




Au niveau comportemental, ce ne sera pas ce que je cherche puisqu'après le résultat que je veux est impossible à avoir par agrégat. (il faudrait un produit, or ce n'est pas faisable dans cette version)
Mais comme je n'aime pas rester sur un blocage...Et que ça pourra toujours servir un jour ou l'autre !


Si l'un de vous voit l'erreur, merci de la signaler Wink
Je continue de chercher de mon côté. Je tomberai bien sur un projet où ça servira Smile

Merci de m'avoir lu.


Dardadax

18-06-2008 15:08 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse




Discussions apparemment similaires...
Discussion : Auteur Réponses : Affichages : Dernier message
  crée son blog sur server ftp et + dhal 3 4 279 26-10-2009 22:05 PM
Dernier message: Troll
  [SQLSRV2005] SSAS - Pas d'agrrégation sandmil 3 4 943 29-06-2009 12:45 PM
Dernier message: sandmil
  Colonne CUMULÉ avec SSAS PBERTHIAUME 6 5 215 26-11-2008 21:38 PM
Dernier message: Troll
  Donkey Server en double ! blueshift 1 2 979 31-10-2006 13:09 PM
Dernier message: Troll

Aller à :


Utilisateur(s) parcourant cette discussion : 1 visiteur(s)