select  a.classname ,a.username ,a.score+nvl(b.scoreadjust,0),
        decode((select salary from setsalary where classname = a.classname and username=a.username),
                null,(select salary from standsalary where classname = a.classname and username=a.username),
                (select salary from setsalary where classname = a.classname and username=a.username)),
        c.salary      
  from userinfo a ,useradjust b ,(select classname, username,nvl(sum(salary),0)as salary from userlastsalary group by classname, username) c
  where a.classname = b.classname(+)
  and a.username = b.username(+)
  and a.classname = c.classname(+)
  and a.username = c.username(+)