首页 > 解决方案 > 我想使用 CASE 和 WHEN 创建一个 SQL 新列

问题描述

这是我的桌子

cnt_dealno 迪尔诺 数量
1 美国广播公司 3,000
2 美国广播公司 3,000
3 美国广播公司 3,000
1 国防军 5,000
2 国防军 5,000

这就是我认为我会编码的方式

select
case when cnt_dealno = '1' then amount
else amount = 0
end as new_amount
from tab

我尝试做的是什么时候cnt_dealno = 1,那么金额不会改变。但是当cnt_dealno不等于时1,量就会变成0

有没有办法在 SQL 中对此进行编码?

标签: sqloracle

解决方案


应该

SQL> with test (cnt_dealno, dealno, amount) as
  2    (select 1, 'ABC', 3000 from dual union all
  3     select 2, 'ABC', 3000 from dual union all
  4     select 3, 'ABC', 3000 from dual union all
  5     select 1, 'DEF', 5000 from dual union all
  6     select 2, 'DEF', 5000 from dual
  7    )
  8  select cnt_dealno, dealno, amount,
  9    --
 10    case when cnt_dealno = 1 then amount
 11         else 0
 12    end as new_amount
 13  from test;

CNT_DEALNO DEA     AMOUNT NEW_AMOUNT
---------- --- ---------- ----------
         1 ABC       3000       3000
         2 ABC       3000          0
         3 ABC       3000          0
         1 DEF       5000       5000
         2 DEF       5000          0

SQL>

为什么你认为你需要 PL/SQL?


推荐阅读