j'ai une table contenant les champs suivants :
[ id_base, nom, dpt, forfait, arrondi_10, arrondi_100, t1, t2 ... jusqu'à t15, p11,p12 ..... jusquà p25 ........ ]
Je les valeurs inscritent dans p11 à p25 sont séquentielles et P2 est forcément plus que grand que p1, p3 > p2 .... ,
exemple p1 = 30, p2 = 50 , p3 = 70,
Tous les champs ne sont pas forcément rempli, par exemple la séquence peut s'arreter a p11, laissant les dernier à la valeur 0.
J'ai besoin de connaitre la valeur la plus haute contenue dans ces champs 'p'.
j'ai d'abord pensé à 'MAX' mais on ne peux le faire que sur une seule colonne, et la je dois chercher dans 15 colonnes.
alors j'ai fait ça :
J'obtiens le résultat escompté,
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 SELECT case when (case when p11 > p12 then p11 else p12 end) > (case when p13 > p14 then p13 else p14 end) > (case when p15 > p16 then p15 else p16 end) > (case when p17 > p18 then p17 else p18 end) > (case when p19 > p20 then p19 else p20 end) > (case when p21 > p22 then p21 else p22 end) > (case when p23 > p24 then p23 else p24 end) > (case when p25 > p26 then p25 else p26 end) then (case when p11 > p12 then p11 else p12 end) > (case when p13 > p14 then p13 else p14 end) > (case when p15 > p16 then p15 else p16 end) > (case when p17 > p18 then p17 else p18 end) > (case when p19 > p20 then p19 else p20 end) > (case when p21 > p22 then p21 else p22 end) > (case when p23 > p24 then p23 else p24 end) else (case when p25 > p26 then p25 else p26 end) end FROM dls_trps_TEST LIMIT 1;
mais, outre que j'ai du créer une colonne fictive p26, à '0' par default,
je suis obligé de remplir les champs restants vides à la plus haute valeur.
( si mes valeurs s'arretent à p20, je suis obligé d'indiquer la valeur de p20 à toutes les colonnes suivantes).
Si quelqu'un à une idée ?
merci par avance
Partager