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

我想做的是获得结果中的所有产品,即使是那些没有销售的产品。我尝试在产品表上进行 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 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 回答
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 回答