1

次のようなことを行う TSQL クエリがあります。

SELECT SUM(s.Amount) as TotalSales, p.ProductName
FROM SALES s 
INNER JOIN Product p ON s.ProductID = p.ID
GROUP BY p.ProductName

結果の出力は次のとおりです。

TotalSales  Product
-----------------------
123.45      Apples
234.56      Oranges
345.67      Grapes

私がやりたいことは、結果に含まれるすべての製品を取得することです。product テーブルで LEFT JOIN を実行しようとしましたが、混乱するだけです。

だから私は私の出力がこのようなものであることを望みます。

TotalSales  Product
-----------------------
123.45      Apples
234.56      Oranges
345.67      Grapes
0.0         Lemons
0.0         Grapefruit

これを行う方法はありますか?

4

3 に答える 3

4
SELECT SUM(ISNULL(s.Amount,0)) as TotalSales, p.ProductName
FROM SALES s 
RIGHT JOIN Product p ON s.ProductID = p.ID
GROUP BY p.ProductName
于 2009-10-12T22:12:24.917 に答える
2

左結合の場合 (より読みやすく):

SELECT SUM(ISNULL(s.Amount,0)) as TotalSales, p.ProductName
FROM Product p 
LEFT JOIN SALES s ON p.ProductID = s.ID
GROUP BY p.ProductName
于 2009-10-12T22:18:07.587 に答える
2
SELECT COALESCE(SUM(s.Amount), 0) as TotalSales, p.ProductName
FROM Product p
LEFT JOIN SALES s ON s.ProductID = p.ID
GROUP BY p.ProductName
于 2009-10-12T22:13:12.923 に答える