当前位置:Gxlcms > 数据库问题 > sql解惑 25 里程碑问题 答案

sql解惑 25 里程碑问题 答案

时间:2021-07-01 10:21:17 帮助过:4人阅读

table servicesschedule( shop_id char(3) not null, order_nbr char(10) not null, sch_seq number not null check(sch_seq in (1,2,3)), service_type char(2) not null, sch_date date, primary key(shop_id,order_nbr,sch_seq)); drop table sch_seq; create table sch_seq_desc( sch_seq number not null, sch_desc varchar2(20) ); insert into sch_seq_desc values(1,processed); insert into sch_seq_desc values(2,completed); insert into sch_seq_desc values(3,confirmed); insert into servicesschedule values(002,4155526710,1,01,date1994-07-16); insert into servicesschedule values(002,4155526710,2,01,date1994-07-30); insert into servicesschedule values(002,4155526710,3,01,date1994-10-01); insert into servicesschedule values(002,4155526711,1,01,date1994-07-16); insert into servicesschedule values(002,4155526711,2,01,date1994-07-30); insert into servicesschedule values(002,4155526711,3,01,null); select * from sch_seq_desc; select * from servicesschedule; select a.order_nbr, min(case when sch_desc = processed then sch_date end) as processed, min(case when sch_desc = completed then sch_date end) as completed, min(case when sch_desc = confirmed then sch_date end) as confirmed from servicesschedule a,sch_seq_desc b where a.sch_seq=b.sch_seq and service_type= 01 group by order_nbr ; ============================================================================================== ============================================================================================== SQL> select * from servicesschedule; SHOP_I ORDER_NBR SCH_SEQ SERV SCH_DATE ------ -------------------- ---------- ---- ------------ 002 4155526710 1 01 16-JUL-94 002 4155526710 2 01 30-JUL-94 002 4155526710 3 01 01-OCT-94 002 4155526711 1 01 16-JUL-94 002 4155526711 2 01 30-JUL-94 002 4155526711 3 01 6 rows selected. select * from sch_seq_desc; SCH_SEQ SCH_DESC ---------- ---------------------------------------- 1 processed 2 completed 3 confirmed select a.order_nbr, min(case when sch_desc = processed then sch_date end) as processed, min(case when sch_desc = completed then sch_date end) as completed, min(case when sch_desc = confirmed then sch_date end) as confirmed from servicesschedule a,sch_seq_desc b where a.sch_seq=b.sch_seq and service_type= 01 group by order_nbr ; ORDER_NBR PROCESSED COMPLETED CONFIRMED -------------------- ------------ ------------ ------------ 4155526710 16-JUL-94 30-JUL-94 01-OCT-94 4155526711 16-JUL-94 30-JUL-94

 

sql解惑 25 里程碑问题 答案

标签:values   and   cte   creat   weight   com   --   div   cas   

人气教程排行