好像只有用decode的方法,
select 姓名, sum(decode(工资项,'基本工资',工资,0)) 基本工资, 
  sum(decode(工资项,'岗位工资',工资,0)) 岗位工资, ....
from yourtable
group by 姓名不过建议你工资项采用数字编号,这样decode的时候要快一些。

解决方案 »

  1.   

    http://www.china-askpro.com/msg45/qa43.shtml
      

  2.   

    这个如果你要出报表的话,就是交叉报表了。直接用sql来实现这种格式确实是比较烦。不过如果用报表工具来显示的话,就简单多了。例如用report builder.sql如下:
    select  姓名, 工资项,sum(工资) from table1 group by 姓名,工资项.
    然后做报表,把姓名拖到左边,把工资项拖到上边,即可。自动会有合计项。
    用 excel也能实现,就是数据透视表了。
      

  3.   

    假若按Lastdrop(空杯)方法,那么若数据列工资项要新增加记录,就不断地改语句,而且语句已不断复杂化,性能也可想而知!
      

  4.   

    to beckhambobo(beckham):
    那也就是工资项不固定了,那就只有采用存储过程和动态SQL的方法,先将所有的工资项取出,然后拼出所需SQL,不管如何,最终的SQL总是采用decode这样的吧?