Sql 根据月份比较并获取插入表中的新数据

Sql 根据月份比较并获取插入表中的新数据,sql,oracle,Sql,Oracle,我有一个FM_TBL表,它有month_id列,它是数字数据类型,日期以“YYYYMM”格式存储 我想比较上个月和本月的数据,并在此基础上找出本月插入FM_表的新行数。您可以使用减号 select SYS_DB_NAME, ENTITY_ID, MONTH_ID from my_table where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( extract(month from sysdate), 2,'0') minus select

我有一个FM_TBL表,它有month_id列,它是数字数据类型,日期以“YYYYMM”格式存储

我想比较上个月和本月的数据,并在此基础上找出本月插入FM_表的新行数。

您可以使用减号

select SYS_DB_NAME, ENTITY_ID, MONTH_ID
from my_table 
where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( extract(month from sysdate), 2,'0')
minus  
select  SYS_DB_NAME, ENTITY_ID, MONTH_ID
from my_table 
where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( (extract(month from sysdate) -1) , 2,'0') 
如果需要行内容

select * from  my_table  m
inner join  (
    select SYS_DB_NAME, ENTITY_ID, MONTH_ID
    from my_table 
    where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( extract(month from sysdate), 2,'0')
    minus  
    select  SYS_DB_NAME, ENTITY_ID, MONTH_ID
    from my_table 
    where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( (extract(month from sysdate) -1) , 2,'0')
) T on m.SYS_DB_NAME = t.SYS_DB_NAME 
      AND m.ENTITY_ID = t.ENTITY_ID 
        AND m.MONTH_ID = t.MONTH_ID
如果你只需要数一数

select count(*) from  
inner join  (
    select SYS_DB_NAME, ENTITY_ID, MONTH_ID
    from my_table 
    where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( extract(month from sysdate), 2,'0')
    minus  
    select  SYS_DB_NAME, ENTITY_ID, MONTH_ID
    from my_table 
    where MONTH_ID = to_char(sysdate, 'YYYY') || lpad( (extract(month from sysdate) -1) , 2,'0')
) T

您可以使用
不存在

select count(*)
from fm_tbl t
where t.monthid = to_char(sysdate, 'YYYYMM') and
      not exists (select 1
                  from fm_tbl t2
                  where t2.monthid = to_char(sysdate - interval '1' month, 'YYYYMM') and
                        t2.cust_srcid = t.cust_srcid
                 );

如果客户可以在给定的月份内重复,则使用
count(distinct cust\u srcid)

更新您的问题并显示预期结果。或者,我需要在我已更新的查询中进一步修改。。我还想检查新插入的行数是否不在-10和10之间,然后我只想看到那些行。。