Bonjour,
Déjà, merci si vous êtes en train de lire ces quelques lignes.
Voici mon problème:
Le but est d'afficher sur un site web les résultats consolidés d'une division via requête SQL.
Nous avons donc un périmètre qui peut être variable en fonction du choix de l'utilisateur.
Notre problème est que si une valeur est nulle sur le dividende et/ou diviseur, nous devons exclure ce périmètre du calcul.
Voici la requête de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 SELECT DISTINCT 'Amerique' AS Zone, ROUND( ( ( SELECT SUM(CAST(table.VALUE AS DECIMAL(9,4))) FROM table WHERE table.ID = '"+context.ID_Dividende+"' AND table.PERIMETER_ID IN ("+context.PERIMETER_LIST+") AND table.VALUE <> 'N%' AND table.VALUE is not null AND table.VALUE <> 0 ) / ( SELECT SUM(CAST(table.VALUE AS DECIMAL(9,4))) FROM table WHERE table.ID = '"+context.ID_Diviseur+"' AND table.PERIMETER_ID IN ("+context.PERIMETER_LIST+") AND table.VALUE <> 'N%' AND table.VALUE is not null AND table.VALUE <> 0 ) *100) , "+context.DEC+" ) AS PERCENT_VALUE FROM table WHERE table.ID = '"+context.ID_Dividende+"'
Notre problème se situe donc dans la clause WHERE sur l'argument table.PERIMETER_ID IN ("+context.PERIMETER_LIST+").
Est-il possible de comparer les deux arguments (dividende et diviseur) entre eux grâce au SQL ?
Voici un résumé par tableau :
ID 1 ID 2
10420 0 5
10421 7 4
10422 12 0
10423 13 8
Naturellement, si nous faisons la somme, nous trouvons pour chaque ID, ce qui suit, ainsi que la division.
Somme 32 17
ID2 / ID1 53,125%
Nous, ce que nous cherchons, c'est d'exclure les périmètres ayant des ID à 0
Somme
attendue 20 12
ID2 / ID1 60%
Je vous remercie grandement pour votre aide en espérant avoir été suffisamment clair avec mon problème.
Partager