sql - 在 SQL 中如何使用更新表命令使用 if 语句
问题描述
我正在尝试使用 update 命令更新表中的 2 列,我必须使用 if 语句。桌子:
SQL> create table report(customer_no number primary key, name varchar2(10) not null, current_meter_reading number not null, previous_meter_reading number not null, category_code number not null, units_consumed number, bill_amount number(5,2), remarks varchar2(20));
对于 bill_amount 和备注,我需要使用 if 语句,条件:
IF 类别代码 = 1 账单金额 = 消耗的单位 * 0.90,备注 = “国内”</p>
IF 类别代码 = 2 账单金额 = 消耗的单位 * 2.40, REMARKS = “COMMERCIAL”</p>
IF 类别代码 = 3 账单金额 = 消耗的单位 * 0.50, REMARKS = “FARMERS”</p>
最终输出应如下所示:输出
解决方案
您将在此处使用CASE
表达式:
UPDATE report
SET amount = CASE Category_Code WHEN 1 THEN Units_Consumed * 0.90
WHEN 2 THEN Units_Consumed * 2.40
WHEN 3 THEN Units_Consumed * 0.50 END,
remarks = CASE Category_Code WHEN 1 THEN 'DOMESTIC'
WHEN 2 THEN 'COMMERCIAL'
WHEN 3 THEN 'FARMERS' END
WHERE Category_Code IN (1, 2, 3);
但请注意,如果表中的基础数据可能发生变化,您应该考虑只使用SELECT
具有上述逻辑的 a 作为计算列。也就是说,如果您希望以后可能需要再次执行此更新,我建议您不要执行此更新。
推荐阅读
- angular - 如何在 Angular 4 中使用 input type=“file” 和 ngFor 在标签中添加带有删除选项的选定文件名?
- python - Python - flask - jinja2 - 通过循环值动态生成路由和函数
- php - laravel 中的多用户身份验证,带有一个用户表和链接角色表
- sql - 防止连接后由 SQL Server 生成 XML 中的自闭合标记
- jquery - jquery加载中断html
- python - 从枢轴绘制 Pandas DataFrame
- mysql - 使用未定义的常量 SIGKILL - Laravel 5.7 队列中假定为“SIGKILL”
- excel - 为列中的每个唯一值创建两行并减去
- c# - HTTP 错误 500.30 - ANCM 进程内启动失败
- javascript - 如何动态地将一行添加到 kendo ui 网格(到它的模式)?