Bonsoir à tous, j'ai une petite question pour voir si il est possible de faire une amélioration sur ce que j'ai fait (et j'en suis certain vu les experts ici).
J'ai la table suivante qui est la simplification d'une partie de requêtes SQL:
Ce que je souhaite faire, c'est ajouter une sorte de sous-total conditionnel, en pratique, je veux ajouter pour chaque ville, un sous-total qui est la somme pour chaque entreprise des nombres qui sont inférieur à trois, en pratique le résultat que je souhaite:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 City, Company, number1, number2 Bordeaux, Toto, 10, 1 Bordeaux, Toto2, 2, 5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Bordeaux, Toto, 10, 1 Bordeaux, Toto2, 2, 5 Bordeaux, total, 2, 1
Voila ce que j'ai pensé:
Ca a l'air de marcher, mais je pense pas avoir trouvé la solution la plus simple, peut-être avez vous une meilleure idée ?
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 WITH TT AS ( SELECT 'Bordeaux' City,'Toto' Company, 10 number1, 1 number2 FROM dual union ALL SELECT 'Bordeaux','Toto2', 2,5 FROM dual ) select city,company, sum(test1),sum(test2) from ( select city,decode(company,company,'total') as company, sum(case when number1 < 3 and number1 <>0 then number1 else 0 end) as test1, sum(case when number2 < 3 and number2 <>0 then number2 else 0 end) as test2 from tt group by city,company UNION select * from tt ) group by city, company;
De plus, quand j'ai une somme de 0 pour number1 et number2, je souhaiterais ne pas voir cette ligne "total", sauriez-vous comment faire ?
Merci d'avance.
Partager