报表需求 : 员工号 规则一 规则二 规则三... 是否合格
是否合格是在规则一 规则二...基础上判定的
但是联表查出来的数据是这样的
员工号 规则一 合格
员工号 规则二 合格
员工号 规则三 合格
....
员工号 和 合格 是一张表的 所以感觉重复了
我应该怎么写存储过程呢 把列变成行
------解决方案--------------------
sql可以执行成功 存储过程就没问题了、
- SQL code
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_noorder by y_no 员工号 规则一 规则二 规则三 是否合格----------------------------------------------1 no1 合格 合格 合格 合格2 no2 合格 不合格 合格 不合格3 no3 合格 合格 不合格 不合格