首页 > 解决方案 > 如何使用条件语句插入 oracle 表?

问题描述

我需要计算电费,

  1. 第一个 KW 0.20 美元
  2. 第 2 千瓦 0.30 美元
  3. 1 美元用于后续 KW

我为此设置了表格。

INSERT INTO ELECTRIC_BILL(ADDRESS_ID, READING_ID, BILLING_DATE, DUE_DATE, BILL_AMOUNT)
SELECT 41, 63, TO_DATE('10-SEPTEMBER-2020','DD-MON-YYYY'),
       TO_DATE('10-OCTOBER-2020','DD-MON-YYYY'),
       <<HOW TO ADD IF ELSE STATEMENT HERE? >>
FROM READER;

我认为我需要对我的数学进行一些改进,因为我似乎无法在不需要 if else 语句的情况下找到解决方案。

谢谢大家的帮助!

标签: sqloracle

解决方案


您可以使用CASE..WHEN如下:

INSERT INTO ELECTRIC_BILL (
    ADDRESS_ID,
    READING_ID,
    BILLING_DATE,
    DUE_DATE,
    BILL_AMOUNT
)
    SELECT 41,
           63,
           TO_DATE('10-SEPTEMBER-2020', 'DD-MON-YYYY'),
           TO_DATE('10-OCTOBER-2020', 'DD-MON-YYYY'),
           CASE
               WHEN CUR_READING - PREV_READING > 2000 THEN
                   0.2 + 0.3 + ( 1 * ( ( CUR_READING - PREV_READING ) - 2000 ) )  -- FOR MORE THAN 2 KW
               WHEN CUR_READING - PREV_READING > 1000 THEN
                   ( ( CUR_READING - PREV_READING ) - 1000 ) * 0.3 + 0.2 -- FOR KW BETWEEN 1 AND 2
               ELSE
                   ( CUR_READING - PREV_READING ) * 0.2 -- FOR KW LESS THAN 1
           END AS BILL_AMOUNT
      FROM READER;

推荐阅读