计算相关项目

时间:2018-03-14 02:30:15

标签: sql-server

我有这样的查询:

SELECT
* 

FROM Product.Stock AS PS 
INNER JOIN Product.Product AS P ON PS.ProductId = P.ProductId
INNER JOIN Product.ProductDetail AS PD ON P.ProductId = PD.ProductId
INNER JOIN Product.ProductSize AS PSI ON P.ProductId = PSI.ProductId

我想知道我有多少具有相同SizeId的ProductsId,例如:

enter image description here

在这种情况下,我有两个产品具有相同的ProductId和SizeId,所以我希望得到:2因为我有2个产品的sizeId 1

ProductId来自表:Product.Product SizeId来自表:Product.ProductSize

我怎样才能实现它?此致

3 个答案:

答案 0 :(得分:1)

SELECT
PSI.SizeId, COUNT(DISTINCT P.ProductId)

FROM Product.Stock AS PS 
INNER JOIN Product.Product AS P ON PS.ProductId = P.ProductId
INNER JOIN Product.ProductDetail AS PD ON P.ProductId = PD.ProductId
INNER JOIN Product.ProductSize AS PSI ON P.ProductId = PSI.ProductId
GROUP BY PSI.SizeId

我假设SizeId列在Product.ProductSize表中。

答案 1 :(得分:0)

使用Having Count只显示包含多个产品的尺寸而不需要内部连接,因为您已在一个表中包含所有字段:

SELECT  SizeId, COUNT(Distinct ProductId) 
    FROM  Product.ProductSize 
    GROUP BY SizeId
    Having Count(Distinct ProductId)> 1

答案 2 :(得分:0)

同意@ Jack的回答,我认为加入似乎在这里是多余的。

SELECT
SizeId, COUNT(DISTINCT ProductId)

FROM Product.ProductSize 
GROUP BY SizeId