查询由组和where子句,保持空值

问题描述:

我有如下表一表:查询由组和where子句,保持空值

项目,产品,状态

状态可能是正在进行中,已完成,失败

我想三个不同的表格,列出每个产品的特定状态的项目数量。我可以通过计数项目,分组条件和状态条件来做到这一点。和得到的东西,如:

对于项目状态=进行中:

Product Items 
A  10 
B  20 

和儿子。

但是,如何保留count(items)= 0的产品?如果我把条件放在哪里,这些产品会被过滤掉。

我怎样才能像

Product Items 
A  10 
B  20 
C  0 
D  0 

我使用Oracle SQL

这是我使用查询:

select product, count(item) from item_main 
where status = 'In Progress' 
group by product; 
+0

可以显示原始表以及? –

+0

原始表格包含更多其他专栏,不幸的是我不确定我可以将它放在这里,因为它是公司数据。但基本上,我只是想要每个类别的项目总数,对于每个项目状态。 –

+0

我用我使用的查询更新了我的问题。在此查询中,我错过了类别,其中count(item)= 0 –

SELECT Product, 
     COUNT(CASE status WHEN 'In Progress' THEN 1 END) AS Items 
FROM your_table 
GROUP BY Product 
+0

'select product as label, count(case STATUS where'In Progress'then 1 else 0 end)as item, from item_main group by product; ' - 不起作用。 –

+0

不知何故抛出错误:缺少正确的缺陷。我在这里错过了什么? –

+0

在“'as items,from'”中有一个额外的逗号,并且你不希望'else 0'部分或者省略它或者使用'else NULL'(因为零是可数的,但是NULL不是)。 – MT0

SELECT a.product, count(b.product) from 
(select product from item_main group by product) a LEFT JOIN item_main b on a.product = b.product 
where b.status = 'In progress'