zoukankan      html  css  js  c++  java
  • PLSQL整理 Mr

    --删除重复数据只留一条

    delete from  t_kpi_province_m   where   id   not   in   (

        select   max(id)  from   t_kpi_province_m t   group   by   t.指标

    )

    --商品数量

    SELECT 商品名称,SUM(商品总量)剩余数量 FROM

    (SELECT * FROM AAA

    UNION ALL

     SELECT 商品名称,-出库数量 FROM BBB)A GROUP BY 商品名称

    --查连胜超过两次的球队

    select max(nn.team) team, min(nn.y) B, max(nn.y) + 1 E

      from (select n2.team, n2.y

              from (select * from nba) n1

              join (select * from nba) n2 on n1.team = n2.team

             where n1.y = n2.y + 1) nn

     group by (nn.y - rownum)

     order by B

    --oracle rownum

    rownum是oracle预处理字段,默认标序是1,只有记录集已经满足条件后才会进行后续编号。由于第一条记录rownum默认是1,

    而你的条件是rownum>=6 对第一条记录比较它的rownum肯定不大于6 所以不满足条件 oracle舍弃第一条记录将数据库第二条记录标序为1再进行比较

    肯定都不满足rownum>=6  这样循环也就是说由于没有记录满足rownum>=6所以记录一直被舍弃,rownum一直是1 。

    排序方法:

    select * from (

       select a1.*, rownum rwn  from emp a1   where rownum <=10

    ) where rwn >= 6;

    或者

    select * from (

    select qx.*,row_number() over(order by qx.empno) rwn from emp qx

    ) where rwn between 6 and 10赞同15| 评论(3)

    /**

     *declare自定义赋值方法

     *以scott账户为例

     *2012/9/11 11:17:13

     */

    declare

    n_num number;

    --变量赋值 

    v_char varchar2(30):='gmd';

    --常量 

    c_num constant number:=50;

    --属性类型数据 

    c_type emp.ename%type;

    r_row dept%rowtype;

    b_boolean boolean := true;

    --自定义数据类型 

    type my_type is record(

         mystr varchar2(30),

         mysuser varchar2(30),

         myname varchar2(30)

    );

    c_my_type my_type;

    begin

    --对boolean类型数据赋值 

    if b_boolean = true then

             dbms_output.put_line('真值');

    else

      dbms_output.put_line('假值');

    end if;

    n_num:=50;

    dbms_output.put_line(n_num);

    select ename into v_char from emp where emp.empno=7369;

    dbms_output.put_line(v_char);

    --给%type类型数据赋值 

    select ename into c_type from emp where emp.empno=7499; 

    dbms_output.put_line(c_type); 

    --给%rowtype类型数据赋值 

    select * into r_row  from dept where deptno=10; 

    dbms_output.put_line(r_row.deptno||r_row.dname||r_row.loc); 

    --给自定义数据类型赋值 

    select ename,job,mgr into c_my_type from emp where  emp.empno=7369; 

    dbms_output.put_line(c_my_type.mystr||c_my_type.mysuser||c_my_type.myname); 

    end;

    /**

     *case用法

     *2012/9/11 13:54:29

     */

    declare  

    n_num number:=15; 

    begin 

         --第一种case用法 

         case n_num  

              when 10 then 

                   dbms_output.put_line('第一个case'); 

              when 20 then 

                   dbms_output.put_line('第二个case'); 

              else 

                  dbms_output.put_line('没了'); 

         end case; 

         --第二种case用法 

         case  

              when n_num<10 then 

                   dbms_output.put_line('小于10'); 

              when n_num>10 and n_num<20 then  

                   dbms_output.put_line('大于10小于20'); 

              else  

                   dbms_output.put_line('未知数'); 

         end case; 

    end;

    /**

     *隐式游标

     *2012/9/11 13:54:29

     */

    declare 

    begin  

      update emp set ename='牛郎' where empno=7369; 

      if sql%found then 

         dbms_output.put_line(sql%rowcount); 

      elsif sql%notfound then 

            dbms_output.put_line('没有影响'); 

      end if; 

      commit; 

    end; 

    /**

     *显式游标

     *2012/9/11 13:54:29

     */

     DECLARE

        s_int NUMBER(8) := 10;

        r_row dept%ROWTYPE;

        CURSOR my_cursor(

          deptno NUMBER,

          dname  VARCHAR2,

          loc    VARCHAR2) IS

          SELECT *

          FROM   dept

          WHERE  deptno = deptno

                 AND dname = dname

                 AND loc = loc;

    BEGIN

        OPEN my_cursor(s_int, 'ACCOUNTING', 'NEW YORK');

        LOOP

        --

            FETCH my_cursor INTO r_row;

            exit WHEN my_cursor%NOTFOUND;

            dbms_output.Put_line(r_row.deptno);

            dbms_output.Put_line(r_row.dname);

            dbms_output.Put_line(r_row.loc);

        END LOOP;

        CLOSE my_cursor;

    END;

    /**

     *更新游标,指向单表的游标

     *2012/9/11 13:54:29

     */

    declare 

    cursor mycursor is 

           select * from dept for update; 

    begin 

      for myrow in mycursor 

        loop 

            dbms_output.put_line(myrow.loc); 

           

           --select length(dname) from dept where deptno=10;

           --update dept set dname=myrow.loc||'1' where current of mycursor; 

           --注意的是 current of mycursor

            update dept set dname = substr(myrow.dname,1,length(myrow.dname)-2) where current of mycursor; 

        end loop; 

         commit; 

    end; 

    /*

      更新游标注意点

      1.通过游标更新行 for update【of 列名】必须和where current of cursor 配套使用。

      2.【of 列名】主要用在指向多表关联的游标中,单表的游标默认锁定。

      2.of后是执行要进行锁定表的列【任意一列即可】

      3.游标指向关联查询的结果集时,必须指明进行锁定的表【要进行更新的表】,

            如果未指定锁定表,将无法更新数据。

      4.如果指定了其中A表的锁,更新B表,出错【01410 无效的rowid】。

    */

    --变量声明赋值

    declare

    v_char varchar2(30);

    v_char1 varchar2(30);

    begin

    select t.procedure_name  into v_char from   werrorlog t  where  id =2724194;

    dbms_output.put_line(v_char);

    select regexp_substr(v_char||1234,'[0-9]+' ) into v_char1 from dual;--用正则表达式取出数字

    dbms_output.put_line(v_char1);

    end;

    --base from sniper table werrorlog

    DECLARE

    CURSOR mycur IS

    SELECT * FROM werrorlog; --DECLARE CURSOR

    myrecord werrorlog%ROWTYPE; --DECLARE A RECORD ,AND THE RECORD PROPERTY IS FROM THE TABLE BOOKS

    BEGIN

    OPEN mycur; --OPEN CURSOR

    FETCH mycur INTO myrecord;--FETCH ONE Record TO RECORD FROM CURSOR

    WHILE mycur%FOUND LOOP -- LOOP WHEN HAS RECORDS

    dbms_output.put_line(myrecord.id||','||myrecord.procedure_name);

    FETCH mycur INTO myrecord;--FETCH ONE Record TO RECORD FROM CURSOR AGAIN

    END LOOP; --END LOOP

    CLOSE mycur;--CLOSE CURSOR

    END;

    /

    sourceforge.com

    --去重复,删除时间段精确到分钟

    delete from t_kpi_city_m t where t.类型='GSM'

    AND (T.指标='GSM载频个数'

    or T.指标='GSM小区个数'

    or T.指标='GSM基站个数')

    and to_char(t.月份,'yyyy-mm-dd')='2012-08-01'

    and to_char(t.创建日期,'mi')='33';

    --修表语句

    delete from t_kpi_city_m  t where t.指标 in ('GSM无线利用率',''

    and to_char(t.月份,'yyyy-mm-dd')='2012-08-01'

    and to_char(t.创建日期,'hh24')='11'

    delete from t_kpi_city_m  t

    where to_char(t.月份,'yyyy-mm-dd')='2012-08-01'

    and to_char(t.创建日期,'hh24')='11'

    --动态建表

    create or replace procedure proc_test

    (

    table_name in varchar2, --表名

    field1 in varchar2, --字段名

    datatype1 in varchar2, --字段类型

    field2 in varchar2, --字段名

    datatype2 in varchar2 --字段类型

    ) as

    str_sql varchar2(500);

    begin

    str_sql:=’create table ’||table_name||’(’||field1||’ ’||datatype1||’,’||field2||’ ’||datatype2||’)’;

    execute immediate str_sql; --动态执行DDL语句

    exception

    when others then

    null;

    end ;

    --动态sql执行

    execute proc_test('dinya_test','id','number(8) not null','name','varchar2(100)');

    其实就是存储过程的方式,存储过程调用见java调用存储过程

    --查看表占用的空间

    select s.*,bytes/1024/1024 from user_segments s

    create table poieva

    (

    MONTH date,

    城市 VARCHAR2(10),

    区域 VARCHAR2(50),

    poiid INTEGER,

    名称 VARCHAR2(100),

    主要类别 VARCHAR2(50),

    次要类别 VARCHAR2(50),

    细要类别 VARCHAR2(50),

    公众 VARCHAR2(10),

    教育 VARCHAR2(10),

    家园 VARCHAR2(10),

    集团 VARCHAR2(10),

    类型 VARCHAR2(50),

    投产时间 date,

    网龄 number(8),

    寿命指示 VARCHAR2(50),

    阶段名称 VARCHAR2(50),

    ap数量 number(8),

    运营AP数量 number(8),

    室内放装AP数量 number(8),

    室内合路AP数量 number(8),

    大功率AP数量 number(8),

    基站型AP数量 number(8),

    脱管AP数量 number(8),

    脱管率  NUMBER(20,12),

    工程中AP数量 number(8),

    建设规模 number(8),

    建设规模指示 VARCHAR2(50),

    建设规模说明 VARCHAR2(50),

    网络流量  NUMBER(20,12),

    下行流量  NUMBER(20,12),

    上行流量 NUMBER(20,12),

    流量规模 number(8),

    流量规模指示 VARCHAR2(50),

    流量规模说明 VARCHAR2(50),

    全省排名 VARCHAR2(50),

    行业排名 VARCHAR2(50),

    城市行业排名 VARCHAR2(50),

    城市排名 VARCHAR2(50),

    平均每日流量  NUMBER(20,12),

    平均ap每日流量  NUMBER(20,12),

    有效ap平均日流量  NUMBER(20,12),

    流量密度 number(8),

    流量密度指示 VARCHAR2(50),

    流量密量说明 VARCHAR2(50),

    超忙ap数  number(8),

    超闲ap数 number(8),

    巨流型ap数量 number(8),

    大流量Ap数量 number(8),

    中流量ap数量 number(8),

    小流量ap数量 number(8),

    微流量ap数量 number(8),

    零流量ap数量 number(8),

    空流量AP数量 number(8),

    闲置系数 number(8),

    闲置程度 number(8),

    闲置率 NUMBER(20,12),

    闲置情况指示 VARCHAR2(50),

    闲置情况说明 VARCHAR2(50),

    服务天数 number(8),

    平均每设备每日服务时长 number(8),

    热点可用率 NUMBER(20,12),

    热点可用率评价 VARCHAR2(50),

    热点可用率预示 number(8),

    平均ap网管缺勤天数 NUMBER(20,12),

    平均ap出勤率 NUMBER(20,12),

    ap出勤率评价 VARCHAR2(50),

    ap出勤率预示 NUMBER(20,12),

    部署CMCC数量 number(8),

    部署AUTO数量 number(8),

    公众产品部署率 VARCHAR2(50),

    部署EDU数量 VARCHAR2(50),

    EDU部署率 NUMBER(20,12),

    部属集团产品数量 number(8),

    部属家园产品数量 number(8),

    估计每日上网人数 NUMBER(20,12),

    WLANTYPE VARCHAR2(20)

    )

    excel数据导入oracle

    控制面板-管理工具-数据源(odbc)-增加数据源

    plsql tool-odbc导入

    create table snipertest as

    select x.city_name1 city_name,x.ne_name,to_char(x.FIRST_RESULT,'yyyy-mm') 月份,

    round(avg(总码资源利用率),2) 总码资源利用率

    from

    (SELECT /*+ ordered*/

    c.city_name1,

    TCC_NE_SNAP.USERLABEL NE_NAME,

    TPC_UTRANCELL_NE.FIRST_RESULT     FIRST_RESULT,

    round(decode(((NVL(TPC_UTRANCELL_NE.BRUUL,0) +NVL(TPC_UTRANCELL_NE.BRUDL,0) )*0.75),0,0,

    (NVL(TPC_UTRANCELL_NE.TSNBRASSNBRUUL,0)+NVL(TPC_UTRANCELL_NE.TSNBRASSNBRUDL,0))/

    ((NVL(TPC_UTRANCELL_NE.BRUUL,0) +NVL(TPC_UTRANCELL_NE.BRUDL,0) )*0.75))*100,2) 总码资源利用率,

    c.city_name1||to_char(tpc_utrancell_ne.FIRST_RESULT,'yyyy-mm-dd hh24') a

    FROM npmdb.TPC_UTRANCELL_NE@npmdb TPC_UTRANCELL_NE,npmdb.TCC_NE_SNAP@npmdb  TCC_NE_SNAP,npmdb.region_city@npmdb c

    WHERE   (tcc_ne_snap.NE_TYPE = 9300)

    AND TCC_NE_SNAP.COMPRESS_DATE=TPC_UTRANCELL_NE.COMPRESS_DATE

    AND TCC_NE_SNAP.NE_ID=TPC_UTRANCELL_NE.NE_ID

    AND TCC_NE_SNAP.NE_TYPE=TPC_UTRANCELL_NE.NE_TYPE

    and TCC_NE_SNAP.City_Id=c.city_id

    AND tpc_utrancell_ne.FIRST_RESULT >= to_date('2012-08-01','yyyy-mm-dd')

    AND tpc_utrancell_ne.FIRST_RESULT < to_date('2012-08-31','yyyy-mm-dd')+1)X,

    (select /*+ ordered*/

    a

    from

    (select /*+ ordered*/

    ne_name,FIRST_RESULT,max(ne_name||gentime) a

    from

    (SELECT replace(replace(dataapp.SOA_GET_NENAME@rcounttonpm(UTRANCELL.NE_ID, UTRANCELL.NE_TYPE),'辽宁省-',''),'市','') NE_NAME,

           to_char(UTRANCELL.FIRST_RESULT,'yyyy-mm-dd hh24') gentime,

           to_char(UTRANCELL.FIRST_RESULT,'yyyy-mm-dd') FIRST_RESULT,

           round((TSNBRASSNBRUUL_MAX/0.75) / 100,2) 总码资源利用率,

           dense_rank () over (partition by to_char(UTRANCELL.FIRST_RESULT,'yyyy-mm-dd'),

           dataapp.SOA_GET_NENAME@rcounttonpm(UTRANCELL.NE_ID, UTRANCELL.NE_TYPE)

           order by (TSNBRASSNBRUUL_MAX/0.75) / 100 Desc) dr

    FROM npmdb.TPA_UTRANCELL_SUM@npmdb UTRANCELL

    WHERE utrancell.NE_TYPE =10003

    and (1 = 1)

    AND utrancell.Sum_Level = 0

    AND SV_CAT_ID = -1

    AND SV_ID = -1

    AND utrancell.FIRST_RESULT >= to_date('2012-08-01','yyyy-mm-dd')

    and utrancell.FIRST_RESULT < to_date('2012-08-31','yyyy-mm-dd')+1)

    where dr=1

    group by ne_name,FIRST_RESULT)

    )Y

          

    where x.a=y.a

    group by x.city_name1 ,x.ne_name,to_char(x.FIRST_RESULT,'yyyy-mm')

    异常存储过程创建:

    CREATE OR REPLACE PROCEDURE prc_err_log

    (

     i_procedure_name Varchar2

    ,i_err_msg        Varchar2

    )

    As

    v_sqlcode Varchar(10);

    v_sqlerrm Varchar(1000);

    Begin

      v_sqlcode:=Sqlcode;

      v_sqlerrm:=Sqlerrm;

      Insert Into wErrorLog Values(seq_id.nextval,i_procedure_name,i_err_msg,v_sqlcode,v_sqlerrm,Sysdate);

      commit;

      Exception

       WHEN OTHERS

       Then

          commit;

    END;

    --是够关联2G

    update T_UCELL_CARD_M set 是否关联2G=

    (case

    when 关联2G小区的流量 is not null and 月份=trunc(add_months(sysdate,-1),'mm')  then '是'

    when 关联2G小区的流量 is null and 月份=trunc(add_months(sysdate,-1),'mm')  then '否'

    end)

    where 月份=trunc(add_months(sysdate,-1),'mm')

    --更新覆盖半径

    update T_UCELL_CARD_M set 覆盖半径=

    (case

    when 是否室内='是' and 月份=trunc(add_months(sysdate,-1),'mm')  then 0.05

    when 是否室内='否'

    and (覆盖区域划分 like '%市辖村%' or 覆盖区域划分 like '%县辖村%')

    and 月份=trunc(add_months(sysdate,-1),'mm') then 1

    when 是否室内='否'

    and (覆盖区域划分 like '%城区%' or 覆盖区域划分 like '%市辖镇%'

    or 覆盖区域划分 like '%县城区%' or 覆盖区域划分 like '%县辖镇%')

    and 月份=trunc(add_months(sysdate,-1),'mm')  then 0.4

    end)

    where 月份=trunc(add_months(sysdate,-1),'mm')

    --

    --打开执行计划

     set autotrace traceonly

    --执行sql

     select count(*) from emp;

    /**t_ucell_card_m 通过“网管流量”算“数据热度指数” 逻辑是网管流量〉avg(网管流量)*2,数据热度指数=5       

         网管流量<avg(网管流量)*2 and 网管流量〉avg(网管流量)/2,数据热度指数=3      

         网管流量<avg(网管流量)/2,数据热度指数=1     

    **/

    update t_ucell_card_m set 数据热度指数=

    (case

    when 网管流量>(select avg(网管流量)*2 平均网管流量 from t_ucell_card_m )*2  then 5

    when 网管流量<(select avg(网管流量)*2 平均网管流量 from t_ucell_card_m )*2  and  网管流量>(select avg(网管流量)*2 平均网管流量 from t_ucell_card_m )/2  then 3

    when 网管流量<(select avg(网管流量)*2 平均网管流量 from t_ucell_card_m )/2  then 1

    end)

    where to_char(月份,'yyyy-mm')='2012-08'

    /**

    t_cell_poi_month_relation增加三个字段: 站址,小区流量,数据热度指数

    u_cell_card_m 中

    站址,总流量/1024/当月天数 小区流量,数据热度指数

    **/

    UPDATE T_CELL_POI_MONTH_RELATION T1

       SET (T1.站址, T1.小区流量, T1.数据热度指数) =

        (SELECT 站址,

                总流量 / 1024 /TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,0)), 'dd')) 小区流量,

                数据热度指数

          FROM T_UCELL_CARD_M M

          WHERE M.LAC = T1.LAC AND M.CI = T1.CI )

          where  to_char(t1.month,'yyyy-mm-dd')='2012-08-01' ;

    UPDATE T_CELL_POI_MONTH_RELATION T1

       SET (T1.站址, T1.小区流量, T1.数据热度指数) =

        (SELECT 站址,

                总流量 / 1024 /TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,0)), 'dd')) 小区流量,

                数据热度指数

          FROM T_UCELL_CARD_M M

          WHERE M.LAC = T1.LAC AND M.CI = T1.CI )

          where  to_char(t1.month,'yyyy-mm-dd')='2012-08-01'

          and exists (SELECT 站址,

                总流量 / 1024 /TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE,0)), 'dd')) 小区流量,

                数据热度指数

          FROM T_UCELL_CARD_M M

          WHERE M.LAC = T1.LAC AND M.CI = T1.CI ) ;

    多列變一行

    a 表中有三条记录如下:

    M N
    1 开1
    101 开2
    10101 开3

    如何用一条SQL将a表中的三条数据变成一条插入b表,如下:

    M1 N1 M2 N2 M3 N3
    1 开1 101 开2 10101 开3

    WITH A AS (SELECT 1 M,'開1' N FROM DUAL
    UNION
    SELECT 101 M,'開2' N FROM DUAL
    UNION
    SELECT 10101 M,'開3' N FROM DUAL
    )
    SELECT
    MAX(DECODE(C.SEQ, 1, C.M)) AS M1,
    MAX(DECODE(C.SEQ, 1, C.N)) AS N1,
    MAX(DECODE(C.SEQ, 2, C.M)) AS M2,
    MAX(DECODE(C.SEQ, 2, C.N)) AS N2,
    MAX(DECODE(C.SEQ, 3, C.M)) AS M3,
    MAX(DECODE(C.SEQ, 3, C.N)) AS N3
    FROM
    (
    SELECT A.M,
    A.N,
    ROW_NUMBER () OVER(PARTITION BY 1 ORDER BY A.M) AS SEQ
    FROM A
    ) C

    一列變一行

    例2:

    如下格式: 

    Col 
    aaaa 
    bbbb 
    cccc 
    .... 
    转换后 
    col 
    aaaa,bbbb,cccc,....

    with a as (select 'aaaa' co from dual
    union
    select 'bbbb' co from dual
    union
    select 'cccc' co from dual
    )

    方法一:
    select substr(max(sys_connect_by_path(co,'->')),3) rm 
    from (select a.*,rownum rn from a)
    start with rn=1
    connect by rn-1=prior rn

    方法二:

    create or replace function ff (P_CO VARCHAR2)
    return varchar2 is 
    v_co varchar2(400);
    begin
    for c1 in (select co from A WHERE CO=P_CO ) LOOP
    v_co:=v_co||','||C1.CO;
    END LOOP;
    RETURN V_CO;
    END ;
    select MAX(FF(CO) FROM A;

    一列變多行

    WITH A AS (SELECT 'A' CD FROM DUAL
    UNION
    SELECT 'B' CD FROM DUAL
    UNION
    SELECT 'C' CD FROM DUAL
    UNION
    SELECT 'D' CD FROM DUAL
    UNION
    SELECT 'E' CD FROM DUAL
    UNION
    SELECT 'F' CD FROM DUAL
    UNION
    SELECT 'G' CD FROM DUAL
    UNION
    SELECT 'H' CD FROM DUAL
    UNION
    SELECT 'I' CD FROM DUAL
    )
    select 
    max(decode(mod(rownum, 5), 1, CD, null)) ID1,
    max(decode(mod(rownum, 5), 2, CD, null)) ID2,
    max(decode(mod(rownum, 5), 3, CD, null)) ID3,
    max(decode(mod(rownum, 5), 4, CD, null)) ID4,
    max(decode(mod(rownum, 5), 0, CD, null)) ID5
    from a
    group by ceil(rownum / 5)
    ID1 ID2 ID3 ID4 ID5
    --- --- --- --- ---
    A B C D E
    F G H I


    SQL> WITH A AS (SELECT 1 CD1,0 CD2 FROM DUAL
    2 UNION
    3 SELECT 2 CD1,0 CD2 FROM DUAL
    4 UNION
    5 SELECT 3 CD1,0 CD2 FROM DUAL
    6 UNION
    7 SELECT 4 CD1,0 CD2 FROM DUAL
    8 UNION
    9 SELECT 5 CD1,0 CD2 FROM DUAL
    10 )
    11 SELECT * FROM (SELECT MAX(DECODE(RN,1,CD1,NULL)) ID1,
    12 MAX(DECODE(RN,2,CD1,NULL)) ID2,
    13 MAX(DECODE(RN,3,CD1,NULL)) ID3,
    14 MAX(DECODE(RN,4,CD1,NULL)) ID4,
    15 MAX(DECODE(RN,5,CD1,NULL)) ID5
    16 FROM (SELECT CD1,CD2,ROW_NUMBER()OVER( ORDER BY CD1) RN FROM A)
    17 UNION
    18 SELECT MAX(DECODE(RN,1,CD2,NULL)) ID1,
    19 MAX(DECODE(RN,2,CD2,NULL)) ID2,
    20 MAX(DECODE(RN,3,CD2,NULL)) ID3,
    21 MAX(DECODE(RN,4,CD2,NULL)) ID4,
    22 MAX(DECODE(RN,5,CD2,NULL)) ID5
    23 FROM (SELECT CD1,CD2,ROW_NUMBER()OVER( ORDER BY CD1) RN FROM A))
    24 ORDER BY ID1 DESC
    25 ;

    ID1 ID2 ID3 ID4 ID5
    ---------- ---------- ---------- ---------- ----------
    1 2 3 4 5

    select m7.厂家,

           MSC厂家数量,

           MSS厂家数量,

           MGW厂家数量,

           HLR厂家数量,

           BSC厂家数量,

           RNC厂家数量,

           nvl(MSC厂家数量, 0) + nvl(MSS厂家数量, 0) + nvl(MGW厂家数量, 0) +

           nvl(HLR厂家数量, 0) + nvl(BSC厂家数量, 0) + nvl(RNC厂家数量, 0) as 总量

      from (select distinct (厂家)

              from (select vendor as 厂家

                      from rmw2.rms_msc

                     where stateflag = 0

                     group by vendor

                    union all

                    select vendor_id as 厂家

                      from rmw2.rms_mss

                     where stateflag = 0

                     group by vendor_id

                    union all

                    select vendor_id as 厂家

                      from rmw2.rms_mgw

                     where stateflag = 0

                     group by vendor_id

                    union all

                    select vendor_id as 厂家

                      from rmw2.rms_hlr

                     where stateflag = 0

                     group by vendor_id

                    union all

                    select vendor_id as 厂家

                      from rmw2.rms_bsc

                     where stateflag = 0

                     group by vendor_id

                    union all

                    select vendor_id as 厂家

                      from rmw2.rms_rnc

                     where stateflag = 0

                     group by vendor_id)

             where length(厂家) > 1) m7

      left join (select a.vendor as 厂家, count(a.vendor) as msc厂家数量

                   from rmw2.rms_msc a

                  where a.stateflag = 0

                  group by a.vendor) m1

        on m1.厂家 = m7.厂家

      left join (select b.vendor_id as 厂家, count(b.vendor_id) as mss厂家数量

                   from rmw2.rms_mss b

                  where b.stateflag = 0

                  group by b.vendor_id) m2

        on m2.厂家 = m7.厂家

      left join (select c.vendor_id as 厂家, count(c.vendor_id) as mgw厂家数量

                   from rmw2.rms_mgw c

                  where c.stateflag = 0

                    and c.vendor_id not in ('2')

                  group by c.vendor_id) m3

        on m3.厂家 = m7.厂家

      left join (select d.vendor_id as 厂家, count(d.vendor_id) as hlr厂家数量

                   from rmw2.rms_hlr d

                  where d.stateflag = 0

                  group by d.vendor_id) m4

        on m4.厂家 = m7.厂家

      left join (select e.vendor_id as 厂家, count(e.vendor_id) as bsc厂家数量

                   from rmw2.rms_bsc e

                  where e.stateflag = 0

                  group by e.vendor_id) m5

        on m5.厂家 = m7.厂家

      left join (select f.vendor_id as 厂家, count(f.vendor_id) as rnc厂家数量

                   from rmw2.rms_rnc f

                  where f.stateflag = 0

                  group by f.vendor_id) m6

        on m6.厂家 = m7.厂家

    Mr-sniper
    北京市海淀区
    邮箱:rafx_z@hotmail.com
  • 相关阅读:
    001 spring AOP介绍
    026 spring事件机制--基础内容
    025 使用@Profile完成环境条件注入
    ExpandoObject使用
    企业微信接口问题
    企业号验证后携带URL参数跳转问题
    在创建一个MVC控制器,显示运行所选代码生成器时出错(带读写,使用EF)
    码栈批量提取淘宝后台的图图片空间图片
    码栈编码
    在微信里面打开链接,显示501 Not Implemented,但是同样的链接在其他浏览器是可以打开的。
  • 原文地址:https://www.cnblogs.com/rafx/p/oracle_sur.html
Copyright © 2011-2022 走看看