如何在多表SELECT查询中嵌入CASE语句生成交易类型列?
需求实现方案
这个需求完全可行,直接在SELECT的字段列表中嵌入CASE语句即可实现,以下是具体写法:
标准CASE语句实现
把CASE逻辑作为一个字段加入查询的SELECT列表,不会影响原有多表关联逻辑:
SELECT -- 保留原查询的所有字段 t1.column_name1, t2.column_name2, -- 新增TransactionType列 CASE WHEN opt.oper_type = 'OPTP0000' THEN '05' ELSE 'other' END AS TransactionType FROM table1 t1 JOIN table2 t2 ON t1.id = t2.t1_id JOIN opt_table opt ON t2.opt_id = opt.id -- 原查询的WHERE、GROUP BY、ORDER BY等子句保持不变
其他替代实现方法
根据你使用的数据库类型,还可以用更简洁的函数替代CASE:
- MySQL/MariaDB:使用
IF()函数简化逻辑IF(opt.oper_type = 'OPTP0000', '05', 'other') AS TransactionType - Oracle:使用
DECODE()函数DECODE(opt.oper_type, 'OPTP0000', '05', 'other') AS TransactionType
内容的提问来源于stack exchange,提问作者headspace
相关产品推荐
相关产品推荐

