1

我有 2 张桌子。客户和订单。
在此处输入图像描述

我的要求是...

我想得到如下结果 Customer Detail + HasOrders + Count(Orders)

我写

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 行。

你能告诉我吗?谢谢。

4

1 回答 1

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
于 2012-08-03T12:42:25.300 回答