0

这似乎是一个很容易运行的查询,但我无法让它工作,我开始重新思考我为什么选择处理这个项目。

我试图找出一个 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

4 回答 4

0

我假设一个产品不能属于许多productgroups。

从中删除ShelfaisleGROUP BY因为这是您要计算的内容。

此外, aCOUNT(DISTINCT Shelfaisle)将防止重复(如果适用)。

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

长话短说:

select 
  productid, productgroup, shelflvl, Count(distinct Shelfaisle) AS totalaisles
from productlocation
Where productgroup = 'canned'
Group By productid, productgroup, shelflvl
于 2013-10-15T14:43:04.470 回答
0

不要按您要聚合的列进行分组:

select productid, productgroup, Count(Shelfaisle) AS totalaisles
from productlocation
Where productid=productid AND productgroup = 'canned'
Group By productid, productgroup
于 2013-10-15T14:36:52.247 回答
0

怎么样:

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

您正在添加其他列以进行分组,这意味着您不能将产品隔离为要计算的东西。当您只需要产品和货架时,您正在计算特定货架级别的特定行上的产品。

于 2013-10-15T14:39:30.187 回答
0

这会起作用:

SELECT productid, shelflvl, MIN(productgroup) AS productgroup,
  COUNT(Shelfaisle) AS totalaisles
FROM productlocation
WHERE productgroup = 'canned'
GROUP BY productid, shelflvl
ORDER BY productid;
于 2013-10-15T14:41:52.730 回答