报表需求 : 员工号 规则一 规则二 规则三... 是否合格
是否合格是在规则一 规则二...基础上判定的
但是联表查出来的数据是这样的员工号 规则一 合格
员工号 规则二 合格
员工号 规则三 合格....
员工号 和 合格 是一张表的 所以感觉重复了 我应该怎么写存储过程呢 把列变成行
是否合格是在规则一 规则二...基础上判定的
但是联表查出来的数据是这样的员工号 规则一 合格
员工号 规则二 合格
员工号 规则三 合格....
员工号 和 合格 是一张表的 所以感觉重复了 我应该怎么写存储过程呢 把列变成行
解决方案 »
- oracle 11g win7上安装问题
- rownum 之后 索引就全表扫描了 查询很慢
- 请问用oracle做后台,JSP为前台的WEB项目需要用连接池技术吗?
- 请问同表内,不同记录间不同字段的比较问题,谢谢!
- ORA-00904 Invalid Identifier
- 求一条SQL查询
- 两表连接问题
- 求助 oracle中的数据如何导入sql server2000中?
- windows下Oracle的service启动状态为starting,启动server后重新开启service还是starting状态。
- sql plus连接不上呀,提示 oracle not available
- 关于ORACLE查询时排序的问题
- 求SQL语句-----四个表间的...悲催的人。。。
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 合格 合格 不合格 不合格
(
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自己的表清楚 但是说着 我们局外人确实是不大理解 里面具体的数据是怎样的
表a和表b除了员工号,还有关联条件吗?
表a和表b是一对三的固定关系吗?
否则,如何知道表a中的合格是否对应了b表中规则一、二、三呢
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 规则一 规则二 规则三 合格
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