基于另一列值将指定列设为NULL的SQL查询实现
解决方案
你可以通过CASE表达式精准实现这个逻辑,以下是修正后的查询语句:
select statement_id, prod_id, description, exp_type, -- 当exp_type为Physical时,Digital_income设为NULL,否则取curr_amt CASE WHEN exp_type = 'Physical' THEN NULL ELSE curr_amt END AS Digital_income, -- 当exp_type为Digital时,Physical income设为NULL,否则取curr_amt(带空格的别名用反引号包裹适配MySQL;SQL Server用[],Oracle用"") CASE WHEN exp_type = 'Digital' THEN NULL ELSE curr_amt END AS `Physical income` from table1 where date(created) = 'somedate'
关键说明:
- 针对
Digital_income:判断exp_type是否为'Physical',是则返回NULL,否则返回curr_amt - 针对
Physical income:判断exp_type是否为'Digital',是则返回NULL,否则返回curr_amt - 带空格的字段别名需要用对应数据库的符号包裹,避免语法错误
内容的提问来源于stack exchange,提问作者Subramanian V
相关产品推荐
相关产品推荐

