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 件の場合、Customer ごとに 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 に答える