【发布时间】: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