计算给定相应ID的表中的记录

时间:2013-10-15 14:34:36

标签: sql

这似乎是一个简单的查询运行但我无法让它工作,我开始重新思考为什么我选择解决这个项目。

我正在尝试查找id相同的表中有多少条记录。例如

select productid, productgroup, shelflvl, shelfaisle, Count(Shelfaisle) AS totalaisles
from productlocation
Where productid= productid AND productgroup = 'canned'
Group By productid, productgroup, shelflvl, shelfaisle

具有相同ID的产品可以位于不同的过道和不同的货架上。我所要做的就是看一个产品有多少通道,我不能为我的生活让它正常工作。

感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:0)

请勿按照您要汇总的列进行分组:

select productid, productgroup, Count(Shelfaisle) AS totalaisles
from productlocation
Where productid=productid AND productgroup = 'canned'
Group By productid, productgroup

答案 1 :(得分:0)

怎么样:

select productid, productgroup, Count(shelfaisle) AS totalaisles
from productlocation
Where productid= productid AND productgroup = 'canned'
Group By productid,productgroup

您要将其他列添加到分组依据中,这意味着您无法将产品隔离为要计算的内容。当您只需要产品和货架时,您正在计算特定货架级别上特定行的产品。

答案 2 :(得分:0)

这样可行:

SELECT productid, shelflvl, MIN(productgroup) AS productgroup,
  COUNT(Shelfaisle) AS totalaisles
FROM productlocation
WHERE productgroup = 'canned'
GROUP BY productid, shelflvl
ORDER BY productid;

答案 3 :(得分:0)

我假设某个产品不属于许多productgroup s。

Shelfaisle移除GROUP BY,因为这是您要计算的内容。

此外,COUNT(DISTINCT Shelfaisle)可以防止重复(如果适用)。

最后,您不需要productid=productid条件,显然总是会产生true

长话短说:

select 
  productid, productgroup, shelflvl, Count(distinct Shelfaisle) AS totalaisles
from productlocation
Where productgroup = 'canned'
Group By productid, productgroup, shelflvl