ORACLE 行转列 多行转多列


  1. --decode(行专列,将多行的值改为多列显示)(decode的那个column,是某个列的值,也就是将某个列的值作为新的列的column,MAX聚集函数也可以用sum、min、avg等其他聚集函数替代)  

  2. select risk_id,   

  3. --max(decode(risk_area_order, 1, fullname)) primaryOfficer,  

  4. --max(decode(risk_area_order, 2, fullname)) addtionalOffcier1,  

  5. --max(decode(risk_area_order, 3, fullname)) addtionalOffcier1  

  6. min(decode(risk_area_order, 1, fullname)) primaryOfficer,  

  7. min(decode(risk_area_order, 2, fullname)) addtionalOffcier1,  

  8. min(decode(risk_area_order, 3, fullname)) addtionalOffcier1  

  9. from   

  10.   (select risk.risk_id, re.risk_area_order, officer.last_name || ',' || officer.first_name fullname from rp_risk risk, rp_risk_area_ref re, rp_risk_area area, rp_risk_officer officer   

  11.   where risk.risk_id = re.risk_id  

  12.   and re.risk_area_id = area.risk_area_id(+)  

  13.   and area.risk_officer_id = officer.risk_officer_id(+) order by risk.risk_id, re.risk_area_order)  

  14. group by risk_id order by risk_id;  


你可能感兴趣的:(ORACLE 行转列 多行转多列)