Hallo, versuche normalerweise immer alles erst zu lesen und meine Fehler selbst zu finden, aber diesmal komme ich irgendwie nicht weiter, daher jetzt auch mein erste Eintrag hier
Es geht um folgende Abfrage:
SELECT B.ID, B.KundeName, B.GeschaeftsTyp, MAX(B.Gesamtumsatz) AS Gesamtumsatz FROM(
SELECT
FK.ID,
DR.KundeName,
DR.GeschaeftsTyp,
SUM(FK.SalesAmount) AS Gesamtumsatz
FROM
FaktenKunden FK,
VerkaufsRegion VR,
DimReseller DR
WHERE
FK.Region = VR.Region AND
FK.ID = DR.ID AND
VR.SalesTerritoryGroup = 'ALL' AND
FK.OrderDateKey >= '2010' AND
FK.OrderDateKey <= '2011'
GROUP BY
FK.ID, DR.KundeName, DR.GeschaeftsTyp
ORDER BY
Gesamtumsatz DESC
) B
WHERE
B.Gesamtumsatz = Gesamtumsatz
GROUP BY
ID, KundeName, GeschaeftsTyp
ORDER BY
Gesamtumsatz DESC, ID ASC;
Als Ergebnis werden IMMER mehere Datensätze ausgegeben obwohl ich mehrmals in der Überabfrage angegeben habe das ich nur einen möchte, erstens mit MAX() und zweitens mit WHERE. Außerdem scheint die MAX() funktion überhaupt nicht zu funktionieren, er sortiert nur wegen ORDER BY in beiden Abfragen. Dabei sollte die Abfrage nur den einen Datensatz mit dem höchsten Gesamtumsatz ausgeben (oder halt mehrer wenn die Kunden den gleichen haben).
Wenn jemand weiter weiß wo ich den Fehler gemacht hat bitte sagen Sitze schon seit mehreren Stunden dran und bin fertig mit den Nerven^^
Danke schonmal,
Iggy
Es geht um folgende Abfrage:
SELECT B.ID, B.KundeName, B.GeschaeftsTyp, MAX(B.Gesamtumsatz) AS Gesamtumsatz FROM(
SELECT
FK.ID,
DR.KundeName,
DR.GeschaeftsTyp,
SUM(FK.SalesAmount) AS Gesamtumsatz
FROM
FaktenKunden FK,
VerkaufsRegion VR,
DimReseller DR
WHERE
FK.Region = VR.Region AND
FK.ID = DR.ID AND
VR.SalesTerritoryGroup = 'ALL' AND
FK.OrderDateKey >= '2010' AND
FK.OrderDateKey <= '2011'
GROUP BY
FK.ID, DR.KundeName, DR.GeschaeftsTyp
ORDER BY
Gesamtumsatz DESC
) B
WHERE
B.Gesamtumsatz = Gesamtumsatz
GROUP BY
ID, KundeName, GeschaeftsTyp
ORDER BY
Gesamtumsatz DESC, ID ASC;
Als Ergebnis werden IMMER mehere Datensätze ausgegeben obwohl ich mehrmals in der Überabfrage angegeben habe das ich nur einen möchte, erstens mit MAX() und zweitens mit WHERE. Außerdem scheint die MAX() funktion überhaupt nicht zu funktionieren, er sortiert nur wegen ORDER BY in beiden Abfragen. Dabei sollte die Abfrage nur den einen Datensatz mit dem höchsten Gesamtumsatz ausgeben (oder halt mehrer wenn die Kunden den gleichen haben).
Wenn jemand weiter weiß wo ich den Fehler gemacht hat bitte sagen Sitze schon seit mehreren Stunden dran und bin fertig mit den Nerven^^
Danke schonmal,
Iggy
Comment