2016-05-10 9 views
1

私はこのクエリに固執しています。あなたは、グループにしたいとちょうど顧客ごとに1行が表示されますのでサブクエリでグループ化されていないデータが正しく返されました

SELECT S.Name AS 'CstName', 

     S.MinPrice - SUM(coalesce(c.Balance,0)) AS 'Blc', 

     S.NumberOfItems AS 'Sold' 


FROM Cst c, (
SELECT c.Name, c.address, c.Balance, (Min(s.Price)*i.Qty) AS MinPrice, SUM(i.Qty) AS NumberOfItems 
FROM    dbo.Cst AS c 
      INNER JOIN 
         dbo.Odr AS o ON c.Name = o.Cust 
      INNER JOIN 
         dbo.inc AS i ON i.Order_no = o.Order_No 
      INNER JOIN 
         dbo.spls AS s ON i.Item = s.Item 
WHERE  i.Item = s.Item AND o.Cust =c.Name 
group by i.Qty, c.Name, c.Balance, c.address) S 


GROUP BY S.Name,S.MinPrice, S.Address, S.Balance, S.NumberOfItems 

結果だけトムメアリー一度

CstName Blc Sold 
Tom  207.69 1.00 
Tom  210.00 12.00 
Tom  224.45 10.00 
Mary  217.47 6.00 
Mary  237.54 12.00 
+0

GROUP BY S.Name、S.MinPrice、S.Address、S.Balance、S.NumberOfItemsの代わりに 'GROUP BY S.Name'だけを使用してみませんか? –

答えて

1

を表示する必要があり、あなたはGROUP BY

に使用されていない列を集約する必要がありますあなたの SELECT

だから、あなたはS.MinPrice集約しS.NumberOfItemsとあなたのGROUP BY

からそれらを削除する必要があります
SELECT S.Name     AS 'CstName', 

     SUM(S.MinPrice) - SUM(coalesce(c.Balance,0)) AS 'Blc', -- Based on your need you can use any of the aggregation functions 

     MAX(S.NumberOfItems)    AS 'Sold' -- Based on your need you can use any of the aggregation functions 

... 

GROUP BY S.Name 
関連する問題