繁体   English   中英

案例陈述和加入

[英]Case statement and join

需要这方面的帮助。 我被困住了。 问题是

加入 DEPT_EMP AND DEPARTMENTS AND EMPLOYEES 并显示员工全名,如果员工的性别是 M,则将其显示为男性,如果是 F,则显示为女性,并将其命名为 Gender_Column。

这是我到目前为止想出的:

SELECT CONCAT(e.FIRST_NAME,' ', e.LAST_NAME) AS Full_name, e.Gender
From dept_emp de
JOIN departments d
ON de.dept_no = d.dept_no
JOIN employees e
ON de.emp_no = e.emp_no
        CASE
        WHEN E.gender = 'm' Then 'male'
        WHEN E.gender = 'f' Then 'female'
END

但是我收到错误消息“Msg 156, Level 15, State 1, Line 44 Incorrect syntax near the keyword 'CASE'”

当您需要进行条件列连接时,请在JOIN后指定CASE WHEN

例如,用于过滤列的CASE WHEN条件应该CASE WHENSELECT column之后,并带有一个逗号,例如

SELECT player_name,
       weight,
       CASE WHEN weight > 250 THEN 'heavy-weight'
            ELSE 'light-weight' 
       END AS weight_group
  FROM football_players

所以在你的问题中,解决方案应该是

SELECT CONCAT(e.FIRST_NAME,' ', e.LAST_NAME) AS Full_name, 
       e.Gender,
         CASE
           WHEN E.gender = 'm' THEN 'male'
           WHEN E.gender = 'f' THEN 'female'
         END AS Gender_Column
FROM dept_emp de
JOIN departments d
     ON de.dept_no = d.dept_no
JOIN employees e
     ON de.emp_no = e.emp_no

您需要将案例放入选择中,而不是加入中。

  SELECT CONCAT(e.FIRST_NAME,' ', e.LAST_NAME) AS Full_name,e.Gender , 
CASE WHEN E.gender = 'm' Then 'male' WHEN E.gender = 'f' Then 'female' END as Gender_Text
     From dept_emp de JOIN departments d ON de.dept_no = d.dept_no JOIN employees e ON de.emp_no = e.emp_no 

也没有列名别名,但这不是错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM