如何在多字段SQL查询中按条件修改AMORT_FREQUENCY字段值
解决AMORT_FREQUENCY字段条件转换的SQL问题
直接使用CASE语句即可实现需求,下面是两种正确的写法,适配不同的SQL语法习惯:
写法1:简单CASE表达式(适用于字段直接匹配固定值的场景)
SELECT -- 保留你原查询中需要的所有其他字段 loan_id, customer_name, loan_amount, -- 对AMORT_FREQUENCY进行值映射 CASE AMORT_FREQUENCY WHEN 0 THEN 3 WHEN 1 THEN 2 WHEN 2 THEN 1 WHEN 3 THEN 4 -- 如果字段存在其他未列举的值,可保留原值或设置默认值,比如 ELSE NULL ELSE AMORT_FREQUENCY END AS AMORT_FREQUENCY FROM LOANS;
写法2:搜索CASE表达式(适用于更复杂的条件判断场景)
SELECT loan_id, customer_name, loan_amount, CASE WHEN AMORT_FREQUENCY = 0 THEN 3 WHEN AMORT_FREQUENCY = 1 THEN 2 WHEN AMORT_FREQUENCY = 2 THEN 1 WHEN AMORT_FREQUENCY = 3 THEN 4 ELSE AMORT_FREQUENCY END AS AMORT_FREQUENCY FROM LOANS;
常见错误排查
如果你之前使用CASE失败,大概率是以下原因:
- 遗漏了
END关键字:CASE语句必须以END结尾,否则会触发语法错误 - 未处理
ELSE分支:如果AMORT_FREQUENCY存在0-3之外的值,没有ELSE会返回NULL,可根据需求决定是否保留原值或设置默认 - 条件格式错误:比如简单CASE中
WHEN后面的数值类型与字段不匹配,或者搜索CASE中遗漏了等号
内容的提问来源于stack exchange,提问作者Mario Duran
相关产品推荐
相关产品推荐

