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 :
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;
J'obtiens le résultat escompté,

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