首页 > 解决方案 > 在 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>

最终输出应如下所示:输出

标签: sqloracle

解决方案


您将在此处使用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 作为计算列。也就是说,如果您希望以后可能需要再次执行此更新,我建议您不要执行此更新。


推荐阅读