如何完成从零或空值的另一个查询派生的报告

时间:2018-12-17 17:39:28

标签: oracle oracle-apex

所以,我真的很难接受报告。 我需要按年份分组的报告。例如,我们要显示每年售出多少辆汽车。因此,报告中有一列年份,汽车的类型/型号以及数量。但是,我也想显示一个值为零/零的行,所以即使没有售出任何特定类型的汽车,我也希望它显示的行是0。 问题是,此查询基于很多视图,这些视图显示了每个事务。因此,我的实际查询工作正常,只是当一年中没有任何类型的销售时不显示任何类型。 当我使用Oracle APEX透视此报告时,它几乎可以正常工作。它显示了所有类型,但是如果我每年进行过滤,则它们将消失。

我拥有所需的所有年份,但没有该年份的数据。我从销售数据的多个角度获取所有数据。有些型号/类型几年未销售,因此,当我查询该报告时,它没有显示出来,这是预期的。例如:

我得到的是

//YEAR - MODEL - QUANTITY //  
2018 - MODEL 1 - 300
2018 - MODEL 2 - 12
2017 - MODEL 1 - 12
2017 - MODEL 2 - 33
2017 - MODEL 3 - 22

我想要的

//YEAR - MODEL - QUANTITY //
2018 - MODEL 1 - 300
2018 - MODEL 2 - 12
2018 - MODEL 3 - 0
2017 - MODEL 1 - 12
2017 - MODEL 2 - 33
2017 - MODEL 3 - 22

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以想到行,并对其进行外部联接。

with years as (
  select add_months(date '1980-1-1', (rownum-1)*12) dt 
  from dual 
  connect by level < 5
)
select y.dt, count(e.hiredate) 
from scott.emp e
right outer join years y
on y.dt = trunc(e.hiredate,'yy')
group by y.dt

DT                  COUNT(E.HIREDATE)
------------------- -----------------
01-01-1982 00:00:00                 1
01-01-1983 00:00:00                 0
01-01-1981 00:00:00                10
01-01-1980 00:00:00                 1