案例陈述并加入

时间:2020-09-15 01:05:21

标签: join case case-statement

需要帮助。我被困住了。问题是

-加入DEPT_EMP和DEPARTMENT AND EMPLOYEE并显示“雇员”全名,如果“雇员的性别”为M,则显示为“男”,如果“ F”,则显示为女性,并将其命名为“ Gender_Column”。 < / em>

到目前为止,这是我想出的,但是我收到错误消息“消息156,级别15,状态1,行44 关键字“ CASE”附近的语法不正确”

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

2 个答案:

答案 0 :(得分:2)

需要做conditional column join时,在CASE WHEN之后指定JOIN

用于过滤列的 CASE WHEN 条件应该紧跟在 SELECT 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

答案 1 :(得分:0)

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

  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 

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