SELECT distinct d.fappraiseeid,d.fappraisee,d.fstate,d.fyear,d.forder,d.flevel
FROM tb_scoredetail d
left join tb_user u
on d.flevel=u.flevel and
where case
when (select flevel from tb_user where fusername='${fr_username}') = 1 then d.flevel=3 and d.fyear=${year}
${if(len(appraisee) == 0,"","and d.fappraiseeid = '" + appraisee + "'")}
when (select flevel from tb_user where fusername='${fr_username}') = 2 then d.flevel=3 and d.fyear=${year}
${if(len(appraisee) == 0,"and d.fappraiseeid = ''","and d.fappraiseeid = '" + appraisee + "'")}
end
order by d.forder asc
Case when 是连续的,并不是像 switch 一样
如果是 oracle 的话case when 可以换成用 decode()