我有一个名为的表maximo_products
和一个名为product_date
.
我需要以2014 年 1 月到 2014 年 12 月之间的格式显示所有不在maximo_products
表格中的不同日期。MON-YYYY
怎么能做到这一点?
SQLFiddle与表结构和记录。
样本输出(表中未提供的日期)
MAR-2014
APR-2014
JUN-2014
JUL-2014
SEP-2014
要获取缺失的月份,您需要生成所有月份。下面使用一个简单的公式来获得 12 个月。然后它not in
用来找出哪些没有值:
with mons as (
select rownum r, add_months('01-JAN-2014', rownum - 1) as mon
from dual
connect by rownum <= 12
)
select *
from mons
where not exists (select 1
from maximo_products mp
where to_char(mp.product_date, 'YYYY-MM') =
to_char(mons.mon, 'YYYY-MM')
)
order by r;
编辑:
您可以将定义移动mons
到子查询中:
select *
from (select rownum r, add_months('01-JAN-2014', rownum - 1) as mon
from dual
connect by rownum <= 12
) mons
where not exists (select 1
from maximo_products mp
where to_char(mp.product_date, 'YYYY-MM') =
to_char(mons.mon, 'YYYY-MM')
)
order by r;