写过一个查询脚本,很长,不过效率应该也满蛮低的
select f.PARA_DESC_TX as luck_region_name,
e.join_region_name,e.brch_name,e.activity_code,e.name,e.card,e.phone,e.jointime,
decode(e.type,'1', '1-乘车','2-报销') 参赛类型,
e.backtime,e.join_region_num,
decode(e.type,'1', '车次'||e.join_card_num,'') 参赛车次,
decode(e.cert_flag,'2', e.cert_flag ||'-已中奖',e.cert_flag ||'-还未中奖') 是否中奖,
decode(e.cert_flag,'2', '车次'||e.luck_card_num,'') 中奖车次,
e.luck_region_num,e.brch_num
from (select D.PARA_DESC_TX as join_region_name,c.brch_name,c.activity_code,c.name,c.card,c.phone,c.jointime,
c.type,c.backtime,c.join_region_num,
c.join_card_num,c.cert_flag,c.luck_card_num,
c.luck_region_num,c.brch_num
from (select t2.brch_name,t1.activity_code,t1.name,t1.card,t1.phone,t1.jointime,
t1.type,t1.backtime,t1.join_region_num,
t1.join_card_num,t1.cert_flag,t1.luck_card_num,
t1.luck_region_num,t1.brch_num
from (select a.activity_type as activity_code,a.NAME as name,a.ADDRESS as card,a.phone as phone, a.jointime as jointime ,
a.isshare as type,
a.remark3 as backtime ,
substr(a.remark2,0,instr(a.remark2,'#')-1) as join_region_num,
decode(a.isshare,'1', substr(a.remark,0,instr(a.remark,'#')-1),'') as join_card_num,
a.cert_flag as cert_flag,
decode(a.cert_flag,'2', decode(a.isshare,'1',substr(a.remark,instr(a.remark,'#')+1), ''), '') as luck_card_num ,
decode(a.cert_flag,'2', substr(a.remark2,instr(a.remark2,'#')+1), '') as luck_region_num,
a.remark4 as brch_num
from t_gd_wx_activity a
where a.ACTIVITY_TYPE='0349') t1
left join t_gd_wx_brch t2 on t1.brch_num=T2.BRCH_NO) c
left join t_gd_wx_para d on c.activity_code=d.para_value
and d.para_nm='REGION_INFO'
and c.join_region_num=d.para_value2) e
left join t_gd_wx_para f on e.activity_code=f.para_value
and f.para_nm='REGION_INFO'
and e.luck_region_num=f.para_value2