Bonjour à tous,
J'ai un petit soucis avec une requête SQL :
Voici le type d'entrées que j'ai :
Tout d'abord, qu'est ce que je souhaite obtenir ? les champs identifiés en rouges : ils correspondent chacun à une règle de gestion précise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Numéro Nom Hotel Pourcentage_1 Nombredenuit Pourcentage 2 01A Frank Hilton <Null> <Null> 50,00 01A Frank F1 100,00 <Null> 50,00 02B Antoine Ozone <Null> 2 <Null> 02B Antoine Etap 100,00 5 100,00 02B Antoine Ozone <Null> 2 <Null> 02B Antoine Ozone 100,00 <Null> 100,00 02B Antoine Etap <Null> 0 <Null> 03C Elodie Mariott 50,00 <Null> <Null> 03C Elodie IbisEco 50,00 <Null> 100,00 04D Jeremy Ibis 100,00 <Null> 100,00 04D Jeremy B2B 20,00 <Null> 20,00
Il me faut comme sortie 4 lignes pour cet exemple.
Il me faut de manière unique un Numéro et un nom (les informations pourcentage1&2 et nombre de nuit ne servent qu'aux tris)
1 ) Règle numéro 1 exemple numéro : 01A => Il faut que le pourcentage_1 soit supérieur au pourcentage_2 ce qui nous donne comme entrée la ligne 4 ( 01A Frank F1 )
2 ) Règle numéro 2 : si Pourcentage_1 = Pourcentage_2, alors il faut faire la somme des nombres de nuits et prendre la valeur la plus grande: ici on a 5 > ( 2 + 2 ) donc on va sélectionner l’hôtel de la ligne 6 ( 02B Antoine Etape )
3 ) Règle numéro 3 : Dans le cas ou l'on n'a pas une ligne avec pourcentage_1 > Pourcentage_2, on sélectionne l'entrée avec le pourcentage le plus important, en l'occurence ici l'entrée 03C Elodie IbisEco car elle contient 100 en pourcentage_2
4 ) Règle numéro 4 : en cas d'égalité de pourcentages mais pas de nombre de nuit pour faire la comparaison, on sélectionne l'entrée ayant le pourcentage le plus important , ici 04D Jeremy Ibis car 100 > 20.
Il y a donc 4 régles de gestions , j'ai pensé à utiliser un ifthenelse imbriqué ou un case mais je ne parviens pas a le construire.
Ma table s'appelant T1 et les champs numéro, nom et hotel sont des varchar alors que pourcentage_1&2 ainsi que nombredenuit sont des décimaux.
Le soucis est qu'en plus des 4 régles ç gérer , on a une somme a faire dans un cas avec les nuits d'hotels et donc le group by associé.
La requête que j'imagine serait :
Select numero, nom, Hotel
From T1
+ Mes conditions
Mon problème est que je n'arrive pas à visualiser comment regrouper mes données et requêter par groupe de plusieurs lignes ni comment effectuer des comparaisons sur les même champs.
J'ai essayé d'utiliser des nvl pour supprimer les valeurs nulles sur les nuits d'hotel mais ca ne me permet que de régler un seul cas( le numéro 2 ).
Toute aide serait grandement, voir inestimablement appréciée.
Merci !
Partager