Oracle记录

1、求一年中每月的最后一天

Oracle记录_第1张图片

with a as (select level rk 
           from dual
         connect by level <= 12)
 select last_day(to_date(to_char(sysdate, 'yyyy') || '0' || rk,'yyyy-mm')) lastday
 from a where rk < 10
 union all 
 select last_day(to_date(to_char(sysdate, 'yyyy')||rk,'yyyy-mm') ) lastday
 from a where rk >= 10

2、求最近几年

select to_char(sysdate, 'yyyy') - level + 1 year from dual connect by level <= 3

3、判断奇偶数的时候可以用到mod(column,2)这个函数,1为奇数,0为偶数

4、逗号拆分成多行

select date_y,regexp_substr(org_code,'[^,]+',1,level)code
 from table_name
 WHERE ORG_CODE IS NOT NULL
connect by level<=regexp_count(org_code,'[^,]+')
and rowid=prior rowid
and prior dbms_random.value is not null

5、oracle 多列数据相同,部分列数据不同合并不相同列数据

    wm_concat函数

6、修改表空间
alter table table_name move tablespace 空间名;

7、当查询结果为空时,用一条记录填补

 with temp as(
 select t1.AUDIT_UNIT,t1.status,t1.num,t2.total from 
( select AUDIT_UNIT,status,count(1) num from edw_audit_project
  group by AUDIT_UNIT,status) t1
left join 
(select audit_unit,count(1) total from edw_audit_project
 group by audit_unit)t2
on t1.audit_unit=t2.audit_unit
where status='逾期'
 ),
 temp2 as (
 select * from temp
 union all 
 select '' audit_unit,'' status, 0 num,0 total from dual
 ) --当查询结果为空时,用一条空记录填补


select a.* from temp2 a 
where rownum<=(
select decode((select count(1)from temp2) ,1,1,(select count(1) from temp)) from dual)
  1. --获取本月第一天  select trunc(sysdate, 'mon') from dual 
  2. 获取一个月的所有天
    select to_date('200809','yyyymm')+(rownum-1) s_date from dual  
    connect by rownum<=last_day(to_date('200809','yyyymm')) - to_date('200809','yyyymm') + 1

你可能感兴趣的:(Oracle)