none
Colonne "Null" RRS feed

  • Question

  • Bonjour,

    Depuis la migration de la BDD SQL SERVER 6.5 Vers la version 2008, Je suis face à un problème au sein d'une requête qui fonctionnait bien en 6.5 mais retourne des valeurs NULL sur certaines colonnes voici le code la vue :

    SELECT D3_Titre.no_Seance, D3_Titre.DateDebut, D3_Titre.Titre,Min_Cours,Max_Cours, D3_Titre.Forme, D3_Titre.Cours, D3_Titre.Cours_Prec, D3_Titre.Valeur_Nominale, VolOrdre, Volume = D3_voltrans.Volume + D3_VolTransBloc.Volume, Valeur = CONVERT ( numeric(17,2), ( D3_voltrans.Volume * D3_Titre.Cours * D3_Titre.Valeur_Nominale / 100 ) + ( D3_VolTransBloc.Val * D3_Titre.Valeur_Nominale/ 100 ) ) , Transactions = D3_voltrans.Transactions + D3_VolTransBloc.Transactions FROM D3_Titre LEFT OUTER JOIN D3_Ordres ON D3_Titre.no_Seance = D3_Ordres.no_Seance AND D3_Titre.Titre = D3_Ordres.Titre LEFT OUTER JOIN D3_VolTrans ON D3_Titre.no_Seance = D3_VolTrans.no_Seance AND D3_Titre.Titre = D3_VolTrans.Titre LEFT OUTER JOIN D3_VolTransBloc ON D3_Titre.no_Seance = D3_VolTransbloc.no_Seance AND D3_Titre.Titre = D3_VolTransbloc.Titre GO

    1700 2017-05-15 09:27:54.653 BIO       1180.00 1185.00 ACTION     1180.00 1185.00 100 25251 NULL NULL NULL
    1701 2017-05-17 09:30:52.810 AUR       0.00 545.00 ACTION     545.00 545.00 100 283 NULL NULL NULL
    1700 2017-05-15 09:27:54.653 AUR       0.00 545.00 ACTION     545.00 545.00 100 283 NULL NULL NULL
    1700 2017-05-15 09:27:54.653 SAI       665.00 665.00 ACTION     665.00 665.00 100 2466 NULL NULL NULL
    1700 2017-05-15 09:27:54.653 ALL       445.00 445.00 ACTION     445.00 445.00 100 11259 NULL NULL NULL
    1701 2017-05-17 09:30:52.810 ROUI       325.00 0.00 ACTION     325.00 325.00 100 4240 NULL NULL NULL
    1701 2017-05-17 09:30:52.810 SAI       0.00 665.00 ACTION     665.00 665.00 100 1414 NULL NULL NULL
    1701 2017-05-17 09:30:52.810 ALL       445.00 445.00 ACTION     445.00 445.00 100 9291 NULL NULL NULL
    1701 2017-05-17 09:30:52.810 BIO       1180.00 1165.00 ACTION     1180.00 1180.00 100 24644 NULL NULL NULL
    1700 2017-05-15 09:27:54.653 ROUI       325.00 325.00 ACTION     325.00 325.00 100 5010 NULL NULL NULL


    Je vous remercie pour votre aide 
    • Modifié james_usus mercredi 7 juin 2017 10:16 ajout résultat requête
    mercredi 7 juin 2017 10:14

Toutes les réponses

  • Bonjour

    Que contiennent les colonnes transactions des tables D3_voltrans et D3_voltransBloc. Yn null entraine la nullité de la somme.

    L'outer join remonte potentiellement un null s'il n'y a pas de data dans la table de droite D3_VolTransBloc

    LEFT OUTER JOIN D3_VolTransBloc
    ON D3_Titre.no_Seance = D3_VolTransbloc.no_Seance AND
                D3_Titre
    .Titre = D3_VolTransbloc.Titre

    cdlt

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    mercredi 7 juin 2017 14:52
  • Bonjour,

    Oui en effet D3_VolTransBloc ne contient pas de data correspondant à la jointure.

    Faut t'il appliquer un ISNULL sur chaque agrégat?

    J'ai l'ai déjà appliqué sur les colonnes Volume , Transactions,

    mais sur la colonne Valeur je reçois de erreurs de syntaxes . 

    sELECT D3_Titre.no_Seance, D3_Titre.DateDebut, D3_Titre.Titre,Min_Cours,Max_Cours,
            D3_Titre.Forme, D3_Titre.Cours, D3_Titre.Cours_Prec,
            D3_Titre.Valeur_Nominale,
            VolOrdre, 
            
            Volume = ISNULL ((D3_voltrans.Volume),0) + ISNULL ((D3_VolTransBloc.Volume),0),
            Transactions = ISNULL ((D3_voltrans.Transactions),0) + ISNULL
                           ((D3_VolTransBloc.Transactions),0),
            Valeur = isnull (CONVERT ( numeric(17,2),
                           ISNULL    (( D3_voltrans.Volume * D3_Titre.Cours * 
                                 D3_Titre.Valeur_Nominale / 100 ),0) +                 
                          ISNULL     (( D3_VolTransBloc.Val * 
                                 D3_Titre.Valeur_Nominale/ 100 ),0),0)
                                  
            

    Merci



    jeudi 8 juin 2017 08:10
  • ISNULL(..,0) sur les colonnes, pas le résultat de l'opération.

    Cdlt

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    mardi 13 juin 2017 07:53