行转列最简单通俗的方法:

使用sum、max等集合函数 包含如decode、"case when then end"或ifnull这样的条件语句,作为一列,

以此方法转换行为列。

 

以下是个实例(一张表里既存储了公司又存储了部门,当要同时显示出公司和部门,那就用到行转列了):

select proch.id ID,
       max(decode(bt.id, proch.sqrgsid, bt.bmmc,'')) 公司名称,
       max(decode(bt.id, proch.sqrbmid,  bt.bmmc,'')) 部门名称
  from T_LPROMIS_GYLGL_CGSQ proch, -- 采购
       t_lpromis_hr_bm      bt --部门
 where bt.id in (proch.sqrgsid, proch.sqrbmid)
 group by proch.id;

还有其他的方法,如使用存储过程什么滴,希望高手来讨论