select (case when length(b.prodtype)<2 then 'HAC' else b.prodtype end) as prodtype,(case when length(b.spec)<2 then p.spec else b.spec end) as spec ,(case when a.outputcoilthick <=2.5 then '<=2.5' when a.outputcoilthick >2.5 and a.outputcoilthick <=4 then '>2.5' else '>4' end) as thick, sum(case when (substr(x.sta,0,1)='3' or x.sta='26') then b.slabWeight/1000 else 0 end) as totalSlab, sum(case when (x.sta='26' and trim(substr(c.defectCodeA,0,1))='S') then b.slabWeight/1000 else 0 end) as StotalSlab, sum(case when (substr(x.sta,0,1)='3' or x.sta='26') then x.wgt/1000 else 0 end) as totalTest, sum(case when (x.sta='31' and o.jc='1') then x.wgt/1000 else 0 end ) as output01, sum(case when (x.sta='33' and o.jc='1') then x.wgt/1000 else 0 end) as output02, sum(case when (x.sta='31' and o.jc='0') then x.wgt/1000 else 0 end) as output03, sum(case when (x.sta='33' and o.jc='0') then x.wgt/1000 else 0 end) as output04, sum(case x.sta when '34' then x.wgt/1000 else 0 end) as erjipin, sum(case x.sta when '35' then x.wgt/1000 else 0 end) as zajipin, sum(case when (x.sta='35' and trim(substr(c.defectCodeA,0,1))='S')then x.wgt/1000 else 0 end) as Szajipin, sum(case when (x.sta='26' and trim(substr(c.defectCodeA,0,1))='S') then x.wgt/1000 else 0 end) as son01, sum(case when (x.sta='26' and trim(substr(c.defectCodeA,0,1))='H') then x.wgt/1000 else 0 end) as son02, sum(case x.sta when '01' then p.slabweight/1000 else 0 end) as son03 
from (select createDate,createTime, coilno,substr(transData,INSTR(transData,',',1,2)+1) as sta,to_number(substr(transData,INSTR(transData,',',1,1)+1,length(substr(transData,INSTR(transData,',',1,1)+1))-3)) as wgt 
from db.tbihaclgc where concat(concat(createDate,createTime),coilno) in(select concat(concat(createDate,createTime) ,coilno) 
from db.tbihaclgc where (concat(concat(createDate,createTime) ,coilno) in (select concat(max(concat(createDate,createTime)) ,coilno) 
from (
select createDate,createTime, coilno ,transData 
from db.tbihaclgc 
where createDate between '20120412' and '20120412' 
and (queryid='TYJJPASS' or queryid='IHJJAC24' or queryid='IHJJAC26' or queryid='ICJCNBCOIL' or queryid='TYJJAC41' or queryid='TYJJAC42' )

group by coilno 
)

and (substr(transData,INSTR(transData,',',1,2)+1)='31' or substr(transData,INSTR(transData,',',1,2)+1)='33' or substr(transData,INSTR(transData,',',1,2)+1)='34' or substr(transData,INSTR(transData,',',1,2)+1)='35' or substr(transData,INSTR(transData,',',1,2)+1)='01' or substr(transData,INSTR(transData,',',1,2)+1)='26') 

) x 
LEFT join db.TBICnbCOMPDO a on x.coilno=a.coilno 
LEFT join db.TBICNBHSMPDO b on a.coilNo=b.coilNo 
left join db.tbicnbhsppdo d on a.coilno=d.coilno 
LEFT join DB.TBICNBTranDefect c on a.coilNo=c.coilNo 
LEFT join db.TBIS02 p on p.slabId =b.slabId 
left join (select f.coilno, (case when trim(f.lineno)=trim(g.msclineno) then '1' else '0' end) as jc from db.TBICNBPath f,db.tbihama01 g where f.coilno=g.coilno ) o on a.coilNo=o.coilNo 
where (a.status='F' or (a.status='R' and trim(x.sta)='01')) 
group by (case when length(b.prodtype)<2 then 'HAC' else b.prodtype end) ,(case when length(b.spec)<2 then p.spec else b.spec end), (case when a.outputcoilthick <=2.5 then '<=2.5' when a.outputcoilthick >2.5 and a.outputcoilthick <=4 then '>2.5' else '>4' end) 
order by (case when length(b.prodtype)<2 then 'HAC' else b.prodtype end),(case when length(b.spec)<2 then p.spec else b.spec end)以上是一条完整的SQL语句,但是其中包含一些冗余的内容,烦请SQL牛人指点一二,如何简化一下  提高性能,多谢
本人已将SQL拆分好了,只要copy下来粘贴到文本阅读器里,段落应该就会很清晰了,多谢,小弟能有命写出来已经很不易,实在无力修改了,多谢各位大虾,能优化多少算多少,优化好了就发上来,我会及时执行并校验执行结果是否符合原查询结果,性能是否得到优化!我去休息一会!!!!擦了,没分了 只有35分了  先发着  大虾们别嫌少,我有空去赚分,一定会再次答谢各位热心的虾友!