[Oracle]utilisation d'un CASE
Bonjour,
Je souhaiterais faire une insertion multiple au sein de ma table mais je ne sais si ce que je suis en train d'élaborer est SQL ment correct ou même si cela a des chances d'aboutir :roll:
j'ai 3 tables : VALEUR_MESURE_APPLI, CO_GRP_APPLI, GRP_APPLI
VALEUR_MESURE_APPLI: IDapplication, VALEUR, PERFORMANCE,DATE
IDapplication | VALEUR | PERFORMANCE | DATE
1 | 300 | ...| 25/04/3006
7 | 10 | ... | 24/04/2006
11| 7000 | ... |22/04/2006
1| 250 | ... | 20/04/2006
CO_GRP_APPLI: IDapplication, IDfamille appli (table pour faire les correspondances entre un groupe d'applications et ses différentes appli)
IDapplication | IDgrp
1 | 4 |
7 | 4 |
11| 2 |
GRP_APPLI: IDgrp, nom_grp, seuil_perf
IDgrp | nom_grp | seuil_perf
4 | IBM | 500
2 | MICROSOFT | 200
L'objectif serai de comparer le champ valeur d'une mesure d'une application avec le seuil qui est associée au groupe d'applications auquel appartient l'application concernée par la mesure et en déduire la valeur a mettre au sein du champ performance de VALEUR_MESURE_APPLI.
Code:
1 2 3 4 5
|
si valeur < seuil alors performance =100
si seuil <valeur < 2 *seuil alors performance = 100- 100*(valeur -seuil)/Seuil
si valeur > 2 * seuil alors performance = 0 |
je pensais faire quelquechose de la forme :
:?
Code:
1 2 3 4 5 6 7 8 9 10 11
|
UPDATE VALEUR_MESURE_APPLI
SET VALEUR_MESURE_APPLI.PERFORMANCE=(SELECT IDappli, DATE_MES, CASE WHEN VALEUR_MESURE_APPLI.VALEUR > 2*Seuil THEN 0
WHEN VALEUR_MESURE_APPLI.VALEUR > THEN
WHEN Seuil <VALEUR_MESURE_APPLI.VALEUR < 2*Seuil THEN 100- 100*(valeur -seuil)/Seuil100
END AS PERFORMANCE,
FROM VALEUR_MESURE_APPLI, GRP_APPLI
WHERE (VALEUR_MESURE_APPLI.IDAPPLICATION= CO_GRP_APPLI.IDAPPLICATION AND CO_GRP_APPLI.IDgrp=GRP_APPLI.IDgrp) |
mais franchement je ne sais pas trop ou donner de la tete d'un point de vue syntaxique... peut être devrais je écrire le programme a part dans un autre langage dans ce cas la comment l'insérer :( dans ma requete ?
merci bcp a ceux qui prendront la peine de lire ce long post ;)
Charly