SQL Server:计算表B中ID表中ID的次数

时间:2012-01-30 17:00:09

标签: sql sql-server count

我有两张桌子:产品和订单。订单通过ProductID引用产品作为外键。我想知道每种产品的销售次数,包括仅售出一次的产品。我几乎可以使用左连接来使用它,但是仍然为所有产品提供一个计数为1的行,无论它们是否存在于订单表中。

有没有办法做到这一点会让你最终得到这样的东西?

Product | Times sold
Milk    | 5
Bread   | 18
Cheese  | 0

......等等。

3 个答案:

答案 0 :(得分:22)

如果您只是COUNT(*),那么您将没有订单的产品计为1 ...而不是COUNT(o.OrderID),它只计算具有非空的记录{ {1}}。

OrderID

答案 1 :(得分:0)

这样的东西
Select Products.ProductName, Count(Orders.OrderID)
From Orders Inner join on Products Where Orders.ProductID = Products.ProductID
Group By Products.ProductName

答案 2 :(得分:0)

@Michael是对的。

如果您有一个带有计数的订单表,它将如下所示:

SELECT p.Product, SUM(ISNULL(o.ItemCount,0)) as [Count]
FROM
    Products p LEFT JOIN
    Orders o ON o.ProductID = p.ProductID
GROUP BY p.Product