Сравните и получите новые данные, вставленные в таблицу по месяцам. - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть таблица FM_TBL, в которой есть столбец month_id, который является числовым типом данных, и даты сохраняются в этом формате в формате «ГГГГММ».

Я хочу сравнить данные за предыдущий месяц и текущий месяц и на основе этого узнать количество новых строк, вставленных в FM_TABLE в текущем месяце.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Вы можете использовать not exists:

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_srcid).

0 голосов
/ 06 сентября 2018

вы можете использовать минус

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...