如何获得客户明细+他是否有(一)订单

时间:2012-08-03 12:16:11

标签: tsql left-join

我有2张桌子。客户和订单。
enter image description here

我的要求是......

我想得到如下结果 客户详细信息+ 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行。

你可以告诉我吗?感谢。

1 个答案:

答案 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