none
Doppelte Werte werden angezeigt, trotz Summenfunktion RRS feed

  • Frage

  • Hallo,

    ich hoffe jemand kann mir helfen, da ich aktuell nicht mehr weiter komme.

    Ich habe 2 Tabellen, die ich mit einem innerJoin verknüpfe.
    Tabelle 1 enthält eigentlich nur Rahmendaten, wie Erstellungsdatum, Beschreibung des Vorganges usw.
    Tabelle 2 enthält die zu berechnenden Werte.

    Tabelle Vorgänge:
    VorID  MATCHCODE   ERSTELLUNGSDATUM   GGERFUELLT
    123       TestCode        12.01.2010                 0
    124        Hallo2            13.01.2010                 0

    Tabelle VorgängePositionen
    VorID    VorPosID      w2rWVKMe    w2rWVKAu   WVKOPNummer   w2rPreisRef GGBerechnet ...etc....
    123        556              100               NULL             2010-12345             1
    123        557              -50               NULL              2010-12345             2
    123        558              10                 NULL             2010-12345             1
    124        559              100               NULL              2010-58888    

    2 Probleme:
    1. Problem:
    Sobald ich bei der Sum() Berechnung wie folgt schreibe: Sum(w2rWVKMe+w2rWVKAu) erhalte ich NULL (da eine Spalte ja NULL ist).
    Wie kann ich das umgehen?

    2. Problem:
    er gibt bei obiger Konstellation trotz Sum über w2rWVKMe nicht eine Zeile sondern alle 3 aus.

    Der Code dazu:
    SELECT  
    
    b.WKz, b.Erstanlage, b.GGErfuellt, 
    
    a.w2rOPBel,
    
    b.Matchcode, b.Empfaenger, 
    
    a.VorID,
    
    Sum(a.w2rWVKMe) as w2rWVKMenge, 
    
    Sum(a.w2rWVKAu) as w2rWVKMengeA,
    
    Sum(a.w2rPPVRef) / Count(a.w2rPPVRef) as w2rPPVRef,  
    
    Sum(a.w2rPreisRef) / Count(a.w2rPreisRef)  as w2rPreisRef, 
    
    Sum(a.GGGeliefert- a.GGRetour) as Geliefert, 
    
    Sum(a.GGBerechnet) as Berechnet
    
    
    
    FROM         KHKEKVorgaengePositionen a inner JOIN
    
                          KHKEKVorgaenge b ON a.Mandant = b.Mandant AND a.VorID = b.VorID
    
    where b.mandant=1
    
    group by b.WKz, b.Erstanlage, b.GGErfuellt,a.w2rPPVRef, a.w2rOPBel, 
    
            a.w2rPreisRef, 
    
    		b.Matchcode, b.Empfaenger, 
    
    		a.VorID
    
    



    • Bearbeitet Pattasatto Freitag, 5. Februar 2010 09:13 was vergessen
    Freitag, 5. Februar 2010 09:12

Antworten

  • Hallo Pattasatto,

    Sage Office oder Classic Line? :)

    Zu 1.)
    Null + irgendwas ergibt immer NULL; lass diese Werte durch ISNULL mit 0 ersetzen =>

    Sum(ISNULL(w2rWVKMe, 0) + ISNULL(w2rWVKAu, 0))

    Zu 2.)
    Felder die Du aggregierst, musst Du nicht in der GROUP BY auch noch aufführen; sonst werden die auch als Gruppierungsebene mit berücksichtigt. Lass sie weg.
    =>

    group by b.WKz, b.Erstanlage, b.GGErfuellt,

             a.w2rOPBel, b.Matchcode, b.Empfaenger,

             a.VorID

     


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Freitag, 5. Februar 2010 09:46

Alle Antworten

  • Hallo Pattasatto,

    Sage Office oder Classic Line? :)

    Zu 1.)
    Null + irgendwas ergibt immer NULL; lass diese Werte durch ISNULL mit 0 ersetzen =>

    Sum(ISNULL(w2rWVKMe, 0) + ISNULL(w2rWVKAu, 0))

    Zu 2.)
    Felder die Du aggregierst, musst Du nicht in der GROUP BY auch noch aufführen; sonst werden die auch als Gruppierungsebene mit berücksichtigt. Lass sie weg.
    =>

    group by b.WKz, b.Erstanlage, b.GGErfuellt,

             a.w2rOPBel, b.Matchcode, b.Empfaenger,

             a.VorID

     


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Freitag, 5. Februar 2010 09:46
  • Hi Olaf,

    ja, Sage OL.

    Super, danke...
    FUNZT

    Gruss
    Torsten
    Freitag, 5. Februar 2010 11:04