原表 select tt.*from (select t.city, to_char(t.oper_date,'yyyy') 年度, sum( decode(t.status,'优',1,'良',1,0) ) 优良天数, sum( decode(t.grade,'Ⅰ',1,0) ) 一级天数, sum( decode(t.grade,'Ⅱ',1,0) ) 二级天数 from city_day t group by to_char(t.oper_date,'yyyy'),t.city)ttwhere tt.年度 = to_char(sysdate,'yyyy')-1 or tt.年度 = to_char(sysdate,'yyyy')-2order by tt.年度 转后 select ttt.city,sum(decode(ttt.年度,to_char(sysdate,'yyyy'),ttt.优良天数,null)) 今年优良天数,sum(decode(ttt.年度,to_char(sysdate,'yyyy'),ttt.一级天数,null)) 今年一级天数,sum(decode(ttt.年度,to_char(sysdate,'yyyy'),ttt.二级天数,null)) 今年二级天数,sum(decode(ttt.年度,to_char(sysdate,'yyyy')-1,ttt.优良天数,null)) 去年优良天数,sum(decode(ttt.年度,to_char(sysdate,'yyyy')-1,ttt.一级天数,null)) 去年一级天数,sum(decode(ttt.年度,to_char(sysdate,'yyyy')-1,ttt.二级天数,null)) 去年二级天数from (select tt.* from (select t.city, to_char(t.oper_date,'yyyy') 年度, sum( decode(t.status,'优',1,'良',1,0) ) 优良天数, sum( decode(t.grade,'Ⅰ',1,0) ) 一级天数, sum( decode(t.grade,'Ⅱ',1,0) ) 二级天数 from city_day t group by to_char(t.oper_date,'yyyy'),t.city)tt where tt.年度 = to_char(sysdate,'yyyy') or tt.年度 = to_char(sysdate,'yyyy')-1 order by tt.年度 )tttgroup by city