Ich muss den häufigsten Kunden Vornamen aller Kunden finden, deren Heimatadresse in Australien ist, unter Verwendung der AdventureWorks
Datenbank (https://technet.microsoft.com/en-us/library/ms124438(v=sql.100).aspx).Abrufen des maximalen Wertes von einer Abfrage
Der Code, den ich unten habe, gibt mir die Antwort, die ich brauche ("Lacey" verwendet 25 Mal), aber es ergibt 561 Reihen. Wie kann ich dies auf 1 Zeile ohne mit TOP x
oder SET ROWCOUNT
beschränken, um Ergebnisse zu manipulieren?
SELECT
FirstName,
COUNT(PP.FirstName) AS FirstNameCount
FROM
Person.Person AS PP
INNER JOIN Sales.Customer AS SC
ON SC.PersonID = PP.BusinessEntityID
INNER JOIN Person.BusinessEntity AS PBE
ON PBE.BusinessEntityID = PP.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress AS PBEA
ON PBEA.BusinessEntityID = PBE.BusinessEntityID
INNER JOIN Person.AddressType AS PAT
ON PAT.AddressTypeID = PBEA.AddressTypeID
INNER JOIN Person.Address AS PA
ON PA.AddressID = PBEA.AddressID
WHERE
PAT.AddressTypeID = 2 AND
StateProvinceID = 50 OR
StateProvinceID = 64 OR
StateProvinceID = 66 OR
StateProvinceID = 71 OR
StateProvinceID = 77
GROUP BY
FirstName
ORDER BY
FirstNameCount DESC
Nur neugierig - warum kannst du 'TOP' nicht benutzen? Dies ist speziell, was "TOP" zu tun ist - begrenzen Sie das Ergebnis auf X Anzahl der Zeilen. – dotnetom
Da der Fragesteller mir nicht erlaubt – BobSacamano
Sie mischen Ands und Ors, siehe [Operator Vorrang] (https://msdn.microsoft.com/en-us/library/ms190276.aspx). Verwenden Sie entweder 'in', um StateProvinceIDs aufzulisten, oder setzen Sie Klammern um sie. –