【问题标题】:Multiple conditions in CASE WHEN statementCASE WHEN 语句中的多个条件
【发布时间】:2022-08-17 20:57:55
【问题描述】:

我正在使用 SQL (Amazon Redshift) 处理招聘数据,其中每个申请人都有多个来源,我将这些数据分成不同的列,称为 source_1、source_2 和 source_3,以及 number_of_sources 列以记录该申请人有多少来源有。我们希望每个申请人只有一个来源,并且在如何选择哪个来源时要遵循一定的规则,我正在尝试编写一个 CASE WHEN 语句来实现这一点。我目前遇到错误,但我不明白为什么。

我的代码是:

CASE WHEN number_of_sources = 1
THEN source_1
  ELSE WHEN number_of_sources = 2
   and source_1 in (\'Email Applicant\', \'Job site\', \'Added manually\') THEN source_2
  ELSE WHEN number_of_sources = 2
   and source_2 in (\'Email Applicant\', \'Job site\', \'Added manually\') THEN source_1
  ELSE WHEN number_of_sources = 3
   and source_1 in (\'Email Applicant\', \'Job site\', \'Added manually\') 
   and source_2 in (\'Email Applicant\', \'Job site\', \'Added manually\')  THEN source_3
  ELSE WHEN number_of_sources = 3
   and source_1 in (\'Email Applicant\', \'Job site\', \'Added manually\') 
   and source_3 in (\'Email Applicant\', \'Job site\', \'Added manually\')  THEN source_2
  ELSE WHEN number_of_sources = 3
   and source_3 in (\'Email Applicant\', \'Job site\', \'Added manually\') 
   and source_2 in (\'Email Applicant\', \'Job site\', \'Added manually\')  THEN source_1
    ELSE \'Blank\'    END                                                                             as source_final
from staging.candidates_by_source

希望这是有道理的,任何建议将不胜感激!非常感谢

  • CASE 子句中,您只需要ELSE 作为最后一个默认值。将您的 ELSE WHENs 更改为 WHENs。
  • @O.Jones 哦,天哪,我太慢了,非常感谢,仍然掌握 SQL!

标签: sql amazon-redshift case


【解决方案1】:

删除除最后一个以外的所有其他内容

CASE WHEN number_of_sources = 1
THEN source_1
   WHEN number_of_sources = 2
   and source_1 in ('Email Applicant', 'Job site', 'Added manually') 
 THEN source_2
  WHEN number_of_sources = 2
   and source_2 in ('Email Applicant', 'Job site', 'Added manually') 
THEN source_1
  WHEN number_of_sources = 3
   and source_1 in ('Email Applicant', 'Job site', 'Added manually') 
   and source_2 in ('Email Applicant', 'Job site', 'Added manually') 
  THEN source_3
  WHEN number_of_sources = 3
   and source_1 in ('Email Applicant', 'Job site', 'Added manually') 
   and source_3 in ('Email Applicant', 'Job site', 'Added manually')
  THEN source_2
   WHEN number_of_sources = 3
   and source_3 in ('Email Applicant', 'Job site', 'Added manually') 
   and source_2 in ('Email Applicant', 'Job site', 'Added manually')
   THEN source_1
    ELSE 'Blank'    END                                                                               as source_final
from staging.candidates_by_source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多