Sql 根据月份比较并获取插入表中的新数据
我有一个FM_TBL表,它有month_id列,它是数字数据类型,日期以“YYYYMM”格式存储 我想比较上个月和本月的数据,并在此基础上找出本月插入FM_表的新行数。您可以使用减号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
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之间,然后我只想看到那些行。。