SELECT和JOIN中的CASE为列分配新值

时间:2014-02-23 22:40:06

标签: sql-server-2008

在下面的示例中,我需要知道在MGR.manager_name的值时如何将''的值设置为MGR.report_to = 'A'(空字符串)。基本上,当MGR.report_to ='A'时,员工将没有经理,而manager_name将为空。我无法让下面的代码工作。是否有另一种方法可以重新编写它以使其工作。谢谢! JK

SELECT
    EMP.employee_id AS emplid,
    EMP.employee_first_name AS firstname,
    EMP.employee_last_name AS lastname,
    EMP.employee_address AS address,
CASE MGR.manager_name
    WHEN MGR.report_to ='A' THEN ''
    THEN  'B'
    ELSE 'C' 
END AS managername,
    MGR.manager_id AS managerid,
    MGR.report_to
FROM Employee_Table EMP
LEFT OUTER JOIN Manager_Table MGR ON EMP.employee_id  = MGR.employee_id

1 个答案:

答案 0 :(得分:0)

在此更新

 SELECT
    EMP.employee_id AS emplid,
    EMP.employee_first_name AS firstname,
    EMP.employee_last_name AS lastname,
    EMP.employee_address AS address,
CASE when MGR.report_to ='A' then '' 

END AS managername,
    MGR.manager_id AS managerid,
    MGR.report_to
FROM Employee_Table EMP
LEFT OUTER JOIN Manager_Table MGR ON EMP.employee_id  = MGR.employee_id

如果您需要更多案例,只需重复行

当你使用一个案例时,你必须在布尔值时重复大小写,然后将值作为'列名'结束,并以end结束