sql - 我想使用 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 中对此进行编码?
解决方案
应该
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?
推荐阅读
- javascript - 如何使用 li-name 作为 li-item 中的链接
- php - 如何仅显示用户表中排名列中值为1的用户?
- python - 如何将bash转换为python3?
- c# - 阅读时遇到死锁时如何使用实体框架重试策略
- if-statement - 在 Google 表格中验证公式后如何选择选定行和下一行?
- google-sheets - 表格转置和拆分逗号分隔的列表并重复
- distribution - meshlab:我的网格拓扑是否影响曲率结果
- razor - 为什么 Bootstrap 面板在 Blazor 客户端中不起作用?
- r - 如何在ggplot中绘制虚线95%置信区间
- amazon-web-services - Terraform:具有指定可用区的 ElastiCache Redis 集群?