2012-08-03 163 views
1

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

您能否給我建議?謝謝。

+0

對不起,但我沒有別的方式與你溝通。你可以在這裏回答我的問題[link](http://stackoverflow.com/questions/10244297/get-the-list-of-groups-for-the-given-userprincipal)? – donRumatta 2012-08-09 08:48:42

回答

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 
相關問題