我有2张桌子。客户和订单。
我的要求是......
我想得到如下结果 客户详细信息+ HasOrders +计数(订单)
我写了
SELECT Customers.*
, CASE WHEN o.CustomerID IS NOT NULL THEN 1 ELSE 0 END HasOrders
FROM Customers c
LEFT JOIN Orders o
ON c.CustomerID = o.CustomersID
但它会返回很多行。如果客户有5个订单,则每个客户返回5行。
你可以告诉我吗?感谢。答案 0 :(得分:0)
您需要在派生表中进行计数。
SELECT c.*
, case when o.CustomerID is not null
then 1
else 0
end HasOrders
, o.NumberOfOrders
FROM Customers c
LEFT JOIN
(
SELECT CustomerID
, count(*) NumberOfOrders
FROM Orders
GROUP BY CustomerID
) o
ON c.CustomerID = o.CustomersID