Có một số cách tiếp cận:
SELECT OfficeName, Total
FROM ( 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
) c
WHERE Total = MaxTotal
HOẶC
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 CTE
WHERE Total = (SELECT MAX(Total) FROM CTE)
HOẶC
SELECT TOP 1 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
ORDER BY Total DESC
Mặc dù việc sử dụng TOP 1 có thể không phải là thứ bạn đang theo đuổi, nhưng với các phương pháp khác nếu có 2 văn phòng với cùng số lượng khách hàng thì cả hai văn phòng sẽ được trả về, trong khi TOP 1 sẽ chỉ trả về 1 trong số này (có thể theo thứ tự tên văn phòng) . Nếu bạn chỉ muốn có 1 bản ghi, thì đây là phương pháp tốt nhất