Hallo Susann,
ich möchte den Kunden herausfinden, der die meisten Einkäufe hat.
select max (Winner.Anzahl)
from (select count(kundennr) as Anzahl, kundennr, kundenname, Ort
from dbo.Vorgang, dbo.kunde
where Vorgang.kundenid = kunde.kundennr
group by kundennr, kundenname, Ort) as Winner
Das funktioniert und gibt mir die Anzahl der Einkäufe des Kunden mit der größten Menge aus.
Jetzt möchte ich "nur" noch den Kundennamen hinzufügen und das schaffe ich nicht.
dann benötigst Du eine korrelierte Unterabfrage, siehe z.B. </archiv/2008/1/t165377/#m1078290> oder </archiv/2006/7/t133015/#m861544>
SELECT
Winner.kundenname,
Winner.Anzahl
FROM (
SELECT
COUNT(kundennr) Anzahl,
kundennr,
kundenname,
Ort
FROM -- deinen impliziten schreibe ich in einen
dbo.Vorgang -- expliziten Join um
INNER JOIN
dbo.kunde
ON
dbo.Vorgang.kundenid = dbo.kunde.kundennr
GROUP BY
kundennr,
kundenname,
Ort
) Winner
WHERE
Winner.Anzahl = (
SELECT
MAX(w.Anzahl)
FROM (
SELECT
COUNT(kundennr) Anzahl,
kundennr,
kundenname,
Ort
FROM
dbo.Vorgang
INNER JOIN
dbo.kunde
ON
dbo.Vorgang.kundenid = dbo.kunde.kundennr
GROUP BY
kundennr,
kundenname,
Ort
) w -- wichtig: anderer Aliasname!
)
Durch Deinen temporären View sieht das halt nochmals etwas aufwendiger aus.
Nicht getestet, sollte aber das gewünschte liefern.
Freundliche Grüße
Vinzenz