Hãy tưởng tượng tôi có 3 bảng sau trong SQLServer:kỷ lục gần đây nhất trong một trái tham gia
Customer (CustomerID, FirstName, LastName)
Address (AddressID, CustomerID, Line1, City, State)
Product (ProductID, CustomerID, Description)
Một khách hàng có thể có nhiều địa chỉ giao hàng và các sản phẩm mulitple.
Điều tôi muốn làm là liệt kê số lượng khách hàng cho mỗi Tiểu bang nơi Tiểu bang được xác định bằng bản ghi Địa chỉ gần đây nhất. Chẳng hạn như "Có bao nhiêu khách hàng cuối cùng nhận được sản phẩm ở mỗi tiểu bang?". Do đó, tôi không quan tâm đến bất kỳ bản ghi Địa chỉ nào trước đó cho Khách hàng, chỉ là Bản ghi gần đây nhất (được xác định bởi AddressID).
State | Number of Customers
--------------------------
CA | 32
GA | 12
TX | 0
OH | 18
tôi thường làm một cái gì đó như:
SELECT a.State, count(c.CustomerID)
FROM Product p
INNER JOIN Customer c ON c.CustomerID = p.CustomerID
LEFT JOIN Address a ON a.CustomerID = c.CustomerID
WHERE p.ProductID = 101
GROUP BY a.State
Tuy nhiên, như một khách hàng có thể có nhiều địa chỉ khách hàng sẽ chỉ được tính ở bang kỷ lục Địa chỉ gần đây nhất?
P.S. Ở trên hoàn toàn là một kịch bản ví dụ để dễ dàng giải thích các kết nối mà tôi đang cố gắng đạt được và không phản ánh một thiết kế hệ thống thực tế.
Chỉ là những gì tôi đang tìm kiếm, cảm ơn rất nhiều. –
Tuyệt vời! bây giờ, tại sao tôi không nghĩ về điều này! –
Điều này thật gọn gàng. Kudos cho bạn. –