PL/SQL recherche du max entre deux colonnes

Fermé
Misdrhaal Messages postés 49 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 23 février 2006 - 27 oct. 2005 à 10:08
Misdrhaal Messages postés 49 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 23 février 2006 - 27 oct. 2005 à 15:40
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

HackTrack Messages postés 618 Date d'inscription vendredi 26 juillet 2002 Statut Membre Dernière intervention 13 juillet 2013 972
27 oct. 2005 à 15:09
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 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 23 février 2006 16
27 oct. 2005 à 15:40
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