いくつかのアプローチがあります:
SELECT OfficeName, TotalFROM ( SELECT o.OfficeName, c.Total, MAX(Total) OVER() [MaxTotal] FROM Offices o LEFT JOIN ( SELECT OfficeID, COUNT(*) Total FROM Customers GROUP BY OfficeID ) c ON o.OfficeID =c.OfficeID WHERE o.ClusterID =29 ) cWHERE Total =MaxTotal
プレ>または
WITH CTE AS( SELECT o.OfficeName, c.Total FROM Offices o LEFT JOIN ( SELECT OfficeID, COUNT(*) Total FROM Customers GROUP BY OfficeID ) c ON o.OfficeID =c.OfficeID WHERE o. ClusterID =29)SELECT *FROM CTEWHERE Total =(SELECT MAX(Total) FROM CTE)
プレ>または
SELECT TOP 1 o.OfficeName, c.TotalFROM Offices o LEFT JOIN ( SELECT OfficeID, COUNT(*) Total FROM Customers GROUP BY OfficeID ) c ON o.OfficeID =c.OfficeIDWHERE o.ClusterID =29ORDER BY総DESCコード> プレ>
TOP 1 を使用すると目的とは異なる場合がありますが、他の方法では同じ数の顧客を持つ 2 つのオフィスがある場合、両方が返されますが、TOP 1 ではそのうちの 1 つだけが返されます (おそらくオフィス名の順)。 .レコードが 1 つだけ必要な場合は、これが最適な方法です