sql语句总结

--case when 的用法

case   when length(t1.DEPARTMENT_NO) > 8 then   substr(t1.DEPARTMENT_NO, 1, 6) || '...'

            else    t1.DEPARTMENT_NO

 end SUB_DEPARTMENT_NO


CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END

--将一个表中数据插入到另一个表中

insert into table1 (login_id,org_rank,department_no,login_name)
 select t1.login_id,t2.region_rank,t3.line,t1.user_name
   from table t2,pure_user_b t3
   where t1.data_area=t2.region_id
   and t1.login_id=t3.login_id

--查询login_id重复的数据

   select t.login_id from
        ( select t1.login_id,t2.region_rank,t3.line,t1.user_name
              from pure_user t1,kpi_region t2,pure_user_b t3
         where t1.data_area=t2.region_id
             and t1.login_id=t3.login_id) t
   group by login_id
   having count(login_id)>1

--复制数据表、sys_connect_by_path函数的使用

create table  kpi_region_mid as
select sys_connect_by_path(t.region_id, '/')  as region_rank,
       level as region_type_id,
       t.region_id,
       t.region_name,
       t.parent_id,
       t.mnemonic,
       rownum as ord
  from kpi.kpi_region t
 start with t.region_id = 'root'
connect by prior t.region_id = t.parent_id


在Oracle中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。
sys_connect_by_path(字段名, 2个字段之间的连接符号),注意这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,',')。
  还有,这个函数使用之前必须先建立一个树,否则无用。

--查询锁表语句

   SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

  l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

  FROM v$locked_object l, all_objects o, v$session s

  WHERE l.object_id = o.object_id

  AND l.session_id = s.sid

  ORDER BY sid, s.serial# ;

在表上建一个触发器:

CREATE OR REPLACE TRIGGER set_tid BEFORE INSERT ON test2
FOR EACH ROW
DECLARE next_tid NUMBER;
BEGIN
  SELECT seq_tid.nextval INTO next_tid FROM dual;
  :new.tid:=next_tid;
END;
 }
 

--表操作授权

grant (select、ALL) on kpicode.ods_cb_organ_grid_zb to kpi





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值