PL/SQL recherche du max entre deux colonnes

Misdrhaal Messages postés 49 Statut Membre -  
Misdrhaal Messages postés 49 Statut Membre -
Bonjour,

je vous ecris car un problème important se pose à moi.

Pour faire simple je fais un planning en C# et j'ai besoin des résultats d'une procédure stockée PL/SQL(Oracle), créée aussi par mes soins.

Cette procédure dans un premier temps renvoie 5 dates(d1,d2,d3,d4,d5)

Cela se fait à l'aide d'un select (assez complexe à cause du nombre detables à consulter mais bon on se limite au renvoi des résultats).

L'idée maintenant c'est d'inclure ce select dans un autre select pour récupérer le max entre les dates d2,d3,d5 (et le min entre d1 et d3).

donc ca s'organisera de la façon suivante
SELECT (?) FROM (mon select de dates )

Que puis-je mettre à la place du (?) pour selectionner les dates max et min désirées?
J'aimerais faire ca avec une fonction MAX, le problème est que SQL ne fait le MAX que d'une seul colonne, et non le max de la fusion entre n colonnes.

donc y a-t-il un moyen simple ou dois-je créer une fonction stockée artisanale? ^^

Voila merci de votre attention et bonne continuation.

2 réponses

Utilisateur anonyme
 
Salut!

SELECT MIN(D1_D3.dMin), MAX(D2_D3_D5.dMax) FROM
    (SELECT d1  AS dMin FROM
        (SELECT TO_DATE('09-10-2000','dd-mm-yyyy') d1,
                TO_DATE('10-10-2000','dd-mm-yyyy') d2,
                TO_DATE('11-10-2000','dd-mm-yyyy') d3,
                TO_DATE('12-10-2000','dd-mm-yyyy') d4,
                TO_DATE('13-10-2000','dd-mm-yyyy') d5
        FROM DUAL)
    UNION
    SELECT d3 AS dMin FROM
        (SELECT  TO_DATE('09-10-2000','dd-mm-yyyy') d1,
                TO_DATE('10-10-2000','dd-mm-yyyy') d2,
                TO_DATE('11-10-2000','dd-mm-yyyy') d3,
                TO_DATE('12-10-2000','dd-mm-yyyy') d4,
                TO_DATE('13-10-2000','dd-mm-yyyy') d5
        FROM DUAL)
    ) D1_D3,
    (SELECT d2  AS dMax FROM
        (SELECT TO_DATE('09-10-2000','dd-mm-yyyy') d1,
                TO_DATE('10-10-2000','dd-mm-yyyy') d2,
                TO_DATE('11-10-2000','dd-mm-yyyy') d3,
                TO_DATE('12-10-2000','dd-mm-yyyy') d4,
                TO_DATE('13-10-2000','dd-mm-yyyy') d5
        FROM DUAL)
    UNION
    SELECT d3 AS dMax FROM
        (SELECT  TO_DATE('09-10-2000','dd-mm-yyyy') d1,
                TO_DATE('10-10-2000','dd-mm-yyyy') d2,
                TO_DATE('11-10-2000','dd-mm-yyyy') d3,
                TO_DATE('12-10-2000','dd-mm-yyyy') d4,
                TO_DATE('13-10-2000','dd-mm-yyyy') d5
        FROM DUAL)
    UNION
    SELECT d5 AS dMax FROM
        (SELECT  TO_DATE('09-10-2000','dd-mm-yyyy') d1,
                TO_DATE('10-10-2000','dd-mm-yyyy') d2,
                TO_DATE('11-10-2000','dd-mm-yyyy') d3,
                TO_DATE('12-10-2000','dd-mm-yyyy') d4,
                TO_DATE('13-10-2000','dd-mm-yyyy') d5
        FROM DUAL)        
    ) D2_D3_D5


;-)
HackTrack
1
Misdrhaal Messages postés 49 Statut Membre 16
 
Merci mais entre temps j'ai fini par faire deux fonctions stockées^^
En tous cas merci de la réponse, je vais examnier ca en détail pour comprendre un peu.
0