SUM funktion stimmt nicht

DrBishop

Grünschnabel
Hallo liebe Gemeinde,

ich habe ein Problem was mich nun schon fast den ganzen Tag gekostet hat.
Ich mache einen Query auf 3 Tabellen, das schaut so aus:

SELECT u.UserVorname, u.UserNachname, u.UserMobile, u.UserMail, k.KonzernName,
w.LID, SUM(DISTINCT um.YTD_2011) as YTD2011, SUM(DISTINCT w.KW$kwvw) as KWvwsum, SUM(DISTINCT w.KW$kw) as KWa
FROM users u, xxxx um, konzern k, yyyyy w
where
k.UserID = u.UserID
AND k.LID = w.LID
AND k.LID = um.LID
AND UPPER(k.KonzernName) LIKE UPPER('$searchid%')
GROUP BY k.KonzernName
ORDER BY cast(KonzernName as char) asc, binary KonzernName desc");

So gut so schön funktioniert. Die Variable $kw enthält die aktuelle KW die Variable $kwvw due Vorwoche und ist mein Spaltenbezug in der Tabelle - das haut auch hin. In der Tabelle sind 52 Spalten für die KWs im Jahr.
Nun Zuordnung zum User stimmt, Umsatz stimmt auch aber aus der Tabelle "yyyyy" sollen die Werte in der Spalte KW aufsummiert werden und das macht er zwar aber das Ergebnis stimmt nicht. Es ist immer zu wenig als würde er Datensätze weglassen.
Ich muss dazu sagen das in der Tabelle xxxx mehr oder weniger Datensätze sein können als in yyyyy. Habe auch mit Join probiert, die Gruppierung etliche male verändert geht nicht. Hat jemand ne Idee?

Danke schon mal!

DrBishop
 
Hi.

Dir ist schon bewußt, dass SUM(DISTINCT) doppelte Werte außer Acht läßt?
SQL:
select sum(distinct x) from values(1, 1, 1, 1, 1) as x
Code:
Ergebnis: 1
Gruß
 
Guter Ansatz werde ich nochmal testen. Ohne distinct hatte er
mir die ganze Spalte summiert ohn bezug zu LID. Ich probier
Heute Abend noch, möglicherweise stimmt dann etwas in der
Gruppierung nicht.
 
Moin deepthroat,

Problem erledigt, auf Grund der unterschiedlichen Menge an Datensätzen hat er hier falsch summiert.
Habe es mit sub select gelößt nun stimmts, Danke jedoch für Deine Hilfe!

Grüße
DrBischop
 

Neue Beiträge

Zurück