【问题标题】:Case statement and join案例陈述和加入
【发布时间】:2021-01-01 17:27:03
【问题描述】:

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

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

这是我目前想出的:

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 关键字“CASE”附近的语法不正确”

【问题讨论】:

    标签: mysql sql join case case-statement


    【解决方案1】:

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

    过滤列的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
    

    【讨论】:

      【解决方案2】:

      您需要将 case 放入 select,而不是 join。

        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 
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2010-10-30
        • 2016-05-13
        • 2016-02-21
        • 1970-01-01
        相关资源
        最近更新 更多