IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

[10g] Jointure "Null" (ou autre chose)


Sujet :

PL/SQL Oracle

  1. #1
    CUCARACHA
    Invité(e)
    Par défaut [10g] Jointure "Null" (ou autre chose)
    Salut,

    J'ai fait une petite vue ci après :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    SELECT 
        M.ID_BREACH_MAIN,
        P.ID_BREACH_PED,
        M.IS_ARCHIVED AS MAIN_IS_ARCHIVED,
        P.IS_ARCHIVED AS PED_IS_ARCHIVED,
        M.ISIN,
        nvl(M.PTF_ID,'') AS PTF_ID,
        S.ID_PED_STATUS AS STATUS_ID,
        S.NAME AS STATUS_NAME,
        TO_CHAR(PAK_BHR_V2.Get_POSITION_NOMINAL(M.ISIN,M.PTF_ID,T.NAME),'999G999G999G990') AS NOMINAL,
        TO_CHAR((nvl(PAK_BHR_V2.Get_POSITION_NOMINAL(M.ISIN,M.PTF_ID,T.NAME),0) - nvl(PAK_BHR_V2.GET_POSITION_NOMINAL_PREC(M.ISIN,M.PTF_ID,T.NAME),0)),'999G999G999G990')  AS DELTA_NOMINAL_PREC,
        CASE
            WHEN (nvl(PAK_BHR_V2.Get_POSITION_NOMINAL(M.ISIN,M.PTF_ID,T.NAME),0) - nvl(PAK_BHR_V2.GET_POSITION_NOMINAL_PREC(M.ISIN,M.PTF_ID,T.NAME),0)) < 0 THEN
                '~/Images/Down.gif'
            WHEN (nvl(PAK_BHR_V2.Get_POSITION_NOMINAL(M.ISIN,M.PTF_ID,T.NAME),0) - nvl(PAK_BHR_V2.GET_POSITION_NOMINAL_PREC(M.ISIN,M.PTF_ID,T.NAME),0)) > 0 THEN
                '~/Images/Up.gif'
            ELSE
                '~/Images/Stable.gif'
        END AS IMG_PREV_NOMINAL,  
        TO_CHAR(PAK_BHR_V2.Get_POSITION_AMOUNT(M.ISIN,M.PTF_ID,T.NAME),'999G999G999G990') AS AMOUNT,
        TO_CHAR((nvl(PAK_BHR_V2.Get_POSITION_AMOUNT(M.ISIN,M.PTF_ID,T.NAME),0)-nvl(PAK_BHR_V2.GET_POSITION_AMOUNT_PREC(M.ISIN,M.PTF_ID,T.NAME),0)),'999G999G999G990')  AS DELTA_AMOUNT_PREC,
        CASE
            WHEN (nvl(PAK_BHR_V2.Get_POSITION_AMOUNT(M.ISIN,M.PTF_ID,T.NAME),0)-nvl(PAK_BHR_V2.GET_POSITION_AMOUNT_PREC(M.ISIN,M.PTF_ID,T.NAME),0)) < 0 THEN
                '~/Images/Down.gif'
            WHEN (nvl(PAK_BHR_V2.Get_POSITION_AMOUNT(M.ISIN,M.PTF_ID,T.NAME),0)-nvl(PAK_BHR_V2.GET_POSITION_AMOUNT_PREC(M.ISIN,M.PTF_ID,T.NAME),0)) > 0 THEN
                '~/Images/Up.gif'
            ELSE
                '~/Images/Stable.gif'
        END AS IMG_PREV_AMOUNT,  
        (
            NVL
            (
                CONCAT
                (
                    TO_CHAR ((PAK_BHR_V2.Get_POSITION_NOMINAL(M.ISIN,M.PTF_ID,T.NAME)/PAK_BHR_V2.Get_POSITION_AMOUNT(M.ISIN,M.PTF_ID,T.NAME))*100,'990D00')
                    ,
                    ' %'
                )
                ,''
            )
        ) AS RATIO,
        PAK_BHR_V2.GET_POSITION_LIMIT(T.NAME) AS BREACH_RATIO,
        P.FK_TYP_BREACH,
        T.NAME AS BREACH_TYPE,
        PAK_BHR_V2.Get_POSITION_IS_NEW_BREACH(P.ID_BREACH_PED) AS IS_NEW_BREACH,
        TO_CHAR(P.START_DATE,'DD/MM/YYYY') AS START_DATE,
        nvl(PAK_BHR_V2.Get_POSITION_LAST_DATE(P.ID_BREACH_PED),'<span style="color:#cccccc;font-style:italic;">open</span>') AS END_DATE,
        P.RM_MSG,
        P.IS_ARCHIVED
    FROM 
        BHR_BREACH_MAIN M
            INNER JOIN BHR_BREACH_PED P  
                ON P.FK_BREACH_MAIN = M.ID_BREACH_MAIN
            RIGHT OUTER JOIN BHR_PED_STATUS S
                ON P.FK_PED_STATUS = S.ID_PED_STATUS
            RIGHT OUTER JOIN BHR_TYP_BREACH T
                ON P.FK_TYP_BREACH = T.ID_TYP_BREACH
            LEFT OUTER JOIN BHR_CALCULS C
                ON M.ISIN = C.ISIN AND M.PTF_ID = C.ID_PTF
    ORDER BY
        MAIN_IS_ARCHIVED,
        PED_IS_ARCHIVED,
        M.ISIN,
        M.PTF_ID,
        P.START_DATE DESC
    Mon problème est que malgrès le nvl, nvl(M.PTF_ID,'') AS PTF_ID me renvoie une chaine de caractère 'Null' même si je mets nvl(M.PTF_ID,'[N.A.]').

    Du coup j'ai envie de me suicider dans un haut fourneau façon Alien 3 en tenant ma boite Oracle et ses CD bien fort contre mon ventre pour être certain qu'elle ne nuira plus à personne...

    Un petit coup de main serait le bienvenu...

    ++

    Laurent

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Pour Oracle la chaine des caractères '' vaut NULL. Donc Nvl(Null,'') = Nvl(Null,Null) ce qui bien sûr n'a pas de sens.

  3. #3
    CUCARACHA
    Invité(e)
    Par défaut
    Oui c'est pour ça que j'ai précisé que j'ai aussi essayé avec '[N.A.]'

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Laurent Jordi Voir le message
    Oui c'est pour ça que j'ai précisé que j'ai aussi essayé avec '[N.A.]'
    Faut pas chercher midi à quatorze heure, nvl(M.PTF_ID,'[N.A.]') renvoi soit [N.A.] si PTF_ID est nul soit PTF_ID qui contient peut être un blanc.

Discussions similaires

  1. Réponses: 11
    Dernier message: 13/05/2006, 15h17
  2. Réponses: 3
    Dernier message: 23/12/2005, 16h13
  3. Jointure ou autre chose ?...
    Par tcherito dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/11/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo