如何用SQL基于表中数据生成带自定义条件值的列?
SQL实现方案及PL/SQL必要性说明
核心结论
不需要使用PL/SQL,仅用标准SQL语句就能完成需求。
实现步骤及代码示例
假设两张表分别命名为:
learner_view:包含Learner、Certificate view dt字段learner_valid:包含Learner、Certificate valid date字段
方法1:使用标准SQL的CASE表达式(通用所有数据库)
通过Learner字段关联两张表,再用CASE判断日期逻辑生成状态:
SELECT lv.Learner, CASE WHEN lv.`Certificate view dt` < lvld.`Certificate valid date` THEN 'qualified' ELSE 'unqualified' END AS Status FROM learner_view lv INNER JOIN learner_valid lvld ON lv.Learner = lvld.Learner;
方法2:使用MySQL专属的IF函数(仅适用于MySQL)
如果使用MySQL数据库,也可以用更简洁的IF函数实现:
SELECT lv.Learner, IF(lv.`Certificate view dt` < lvld.`Certificate valid date`, 'qualified', 'unqualified') AS Status FROM learner_view lv INNER JOIN learner_valid lvld ON lv.Learner = lvld.Learner;
关于PL/SQL的说明
PL/SQL是Oracle的过程化扩展语言,多用于处理复杂循环、存储过程、触发器等场景。本次需求仅涉及表关联和简单条件判断,基础SQL完全可以覆盖,不需要用到PL/SQL。
内容的提问来源于stack exchange,提问作者africandrogba
相关产品推荐
相关产品推荐

