报表需求 : 员工号 规则一 规则二 规则三... 是否合格
是否合格是在规则一 规则二...基础上判定的
但是联表查出来的数据是这样的员工号 规则一 合格
员工号 规则二 合格
员工号 规则三 合格....
员工号 和 合格 是一张表的 所以感觉重复了  我应该怎么写存储过程呢 把列变成行  

解决方案 »

  1.   


    create table t1
    (
           y_no varchar2(20),
           gz varchar2(10),
           hg varchar2(10)
    )insert into t1 values ('no1','规则一','合格');
    insert into t1 values ('no1','规则二','合格');
    insert into t1 values ('no1','规则三','合格');
    insert into t1 values ('no2','规则一','合格');
    insert into t1 values ('no2','规则二','不合格');
    insert into t1 values ('no2','规则三','合格');
    insert into t1 values ('no3','规则一','合格');
    insert into t1 values ('no3','规则二','合格');
    insert into t1 values ('no3','规则三','不合格');select y_no  员工号,
           decode(sum(c1),1,'合格','不合格') 规则一,
           decode(sum(c2),1,'合格','不合格') 规则二,
           decode(sum(c3),1,'合格','不合格') 规则三,
           case when sum(c1+c2+c3)=3 then '合格' else '不合格' end  是否合格  
    from 
          (select t1.y_no,
                 case when gz='规则一' and hg='合格' then 1 else 0 end c1,
                 case when gz='规则二' and hg='合格' then 1 else 0 end c2,
                 case when gz='规则三' and hg='合格' then 1 else 0 end c3
          from t1)
    group by y_no
    order by y_no     员工号   规则一  规则二  规则三   是否合格
    ----------------------------------------------
    1 no1 合格 合格 合格 合格
    2 no2 合格 不合格 合格 不合格
    3 no3 合格 合格 不合格 不合格
      

  2.   

    表是这种格式?  create table t1
    (
           y_no varchar2(20),
           hg varchar2(10),
           qt varchar2(10)
    );
    insert into t1 values ('no1','合格','其他一');
    insert into t1 values ('no2','合格','其他二');
    insert into t1 values ('no3','合格','其他三');create table t2
    (
           y_no varchar2(20),
           gz varchar2(10)
    );
    insert into t2 values ('no1','规则一');
    insert into t2 values ('no1','规则二');
    insert into t2 values ('no1','规则三');
    insert into t2 values ('no2','规则一');
    insert into t2 values ('no2','规则二');
    insert into t2 values ('no2','规则三');
    insert into t2 values ('no3','规则一');
    insert into t2 values ('no3','规则二');
    insert into t2 values ('no3','规则三')
    LZ自己的表清楚 但是说着  我们局外人确实是不大理解 里面具体的数据是怎样的
      

  3.   

    关系不明确,也没有示例的数据。
    表a和表b除了员工号,还有关联条件吗?
    表a和表b是一对三的固定关系吗?
    否则,如何知道表a中的合格是否对应了b表中规则一、二、三呢
      

  4.   


    create table t1
    (
           y_no varchar2(20),
           hg varchar2(10),
           qt varchar2(10)
    );
    insert into t1 values ('no1','合格','其他一');
    insert into t1 values ('no2','不合格','其他二');
    insert into t1 values ('no3','合格','其他三');create table t2
    (
           y_no varchar2(20),
           gz varchar2(10)
    );
    insert into t2 values ('no1','规则一');
    insert into t2 values ('no1','规则二');
    insert into t2 values ('no1','规则三');
    insert into t2 values ('no2','规则一');
    insert into t2 values ('no2','规则二');
    insert into t2 values ('no2','规则三');
    insert into t2 values ('no3','规则一');
    insert into t2 values ('no3','规则二');
    insert into t2 values ('no3','规则三')
         员工号   规则一  规则二  规则三   是否合格
    ----------------------------------------------
    1 no1 规则一 规则二 规则三 合格
    2 no2 规则一 规则二 规则三 不合格
    3 no3 规则一 规则二 规则三 合格
      

  5.   


    select y_no 员工号,
           wm_concat(c1) 规则一,
           wm_concat(c2) 规则二,
           wm_concat(c3) 规则三,
           hg 是否合格
    from
    (select t1.y_no,
           case when t2.gz='规则一' then t2.gz else null end c1,
           case when t2.gz='规则二' then t2.gz else null end c2,
           case when t2.gz='规则三' then t2.gz else null end c3,
           t1.hg
    from t1,t2
    where t1.y_no=t2.y_no)
    group by y_no,hg