多条件选择语句

时间:2014-08-13 20:25:31

标签: sql

我已经编写了一些代码(如下),如果组织级别低于3,则会尝试选择职位名称和分配给职位的员工人数。

然后我试图插入另外两个条件。当OrganizationLevel低于2时,职称变为大写。

但是我正在努力为这个SQL实现第二个条件。当OrganizationLevel = 1时,职位名称应显示' MANAGING DIRECTOR'。

有人可以帮助我实现这个目标吗?这就是我到目前为止所拥有的:

with T as( SELECT IIF ( OrganizationLevel < 2, UPPER ( IIF ( OrganizationLevel=1, 'MANAGING DIRECTOR', JobTitle )), JobTitle ) AS JobTitle , OrganizationLevel
from HumanResources.Employee)
select count(*) AS NumOfEmp,JobTitle from T 
where OrganizationLevel < 3 group by JobTitle order by JobTitle;

谢谢。

1 个答案:

答案 0 :(得分:1)

您应该尝试使用CASE表达式:

with T as( 
SELECT case
        when OrganizationLevel = 1 then 'MANAGING DIRECTOR'
        when OrganizationLevel < 2 then upper(JobTitle)
        else JobTitle 
    end AS JobTitle,
    OrganizationLevel
from HumanResources.Employee)

select count(*) AS NumOfEmp, JobTitle 
from T 
where OrganizationLevel < 3 
group by JobTitle 
order by JobTitle;