-2

这是我表的记录:

item_code   |   qty

001             1
001             1
002             2    
002             2  
003             2
004             1
005             3

这是我的代码,用于根据以下条件选择不同item_code的数量和总数GROUP BY qty

select item_code, sum(qty) as qty
from imp_inv
group by item_code

这是结果:

item_code   |   qty

001             2
002             4    
003             2
004             1
005             3

我正在努力的是如何选择一个item_code带有 where 子句的qty,这就是我尝试过的:

select item_code, sum(qty) as qty
from imp_inv where qty = 2
group by item_code

这是结果:

item_code   |   qty

002             2    
002             2  
003             2

上面的代码只选择了item_code2 qty,我想要的是item_code根据它的总数选择一个qty,这是我想要的结果:

item_code   |   qty

001             2  
003             2

希望大家能理解我的问题,谢谢大家的帮助。

更新

我在所有选择查询中删除了 distinct。

我将 item_code 的数量更改为 3。

我将 COUNT 更改为 SUM。

4

3 回答 3

4

请尝试以下:

 HAVING count(qty) = 2
于 2013-09-18T08:11:31.253 回答
2

尝试一下:

select q.item_code, q.qty from 
(select item_code as item_code, count(qty) as qty from imp_inv group by item_code) as q
where q.qty=2
于 2013-09-18T08:13:41.640 回答
2

您不应该将列重命名为已作为列名存在的别名,正如您刚刚注意到的那样,这会令人困惑。

WHERE qty = 2指的是QTY,当您将其更改为HAVING qty = 2时,它指的是别名count(qty) 为 qty

只需使用 HAVING 和其他名称,例如count(qty) as cnt

顺便说一句,您不需要 DISTINCT,因为它始终适用于所有列,并且 GROUP BY 已经返回一个不同的值列表。

于 2013-09-18T08:20:49.980 回答