表:account_code       dt           am_state          pm_state
    aaa              2010.5.18    上午迟到           下午迟到
    bbb              2010.5.18    上午迟到           下午迟到
    aaa              2010.6.18    上午迟到           下午迟到
    bbb              2010.6.18    上午迟到           下午迟到
要求:按账号把每个月各个账号的迟到,早退等情况汇总到一个表里,这个表随便(用存储过程实现)由于本人是个菜鸟,所以希望各位,把在pl sql 里的操作步骤也能写下
谢谢了!

解决方案 »

  1.   

    表大体上是:account_code  dt  am_number(上午迟到次数)  pm_number(下午迟到次数)
      

  2.   

    select account_code ,sum(decode(am_state,'上午迟到',1,0)) as am_number,sum(decode(pm_state,'下午迟到',1,0)) as pm_number
    from tabname 
    group by account_code
      

  3.   

    接花谢佛吧:直接执行下面语句create table your_name as select account_code ,sum(decode(am_state,'上午迟到',1,0)) as am_number,sum(decode(pm_state,'下午迟到',1,0)) as pm_number
    from tabname  
    group by account_code
      

  4.   


    create or replace procedure your_name()
     as
     begin
        create table new_tb as (select account_code,am_state,pm_state from this_tb)    
     end;
      

  5.   

    如果是写入一个新的对象中,7楼正解如果是给前端系统提供sp接口则可如下:
    CREATE OR REPLACE PROCEDURE YOUR_NAME(CP OUT SYS_REFCURSOR) AS
    BEGIN
      OPEN CP FOR
        SELECT ACCOUNT_CODE,
               AM_STATE,
               PM_STATE
          FROM THIS_TB;
    END;