Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用条件语句插入oracle表?_Sql_Oracle - Fatal编程技术网

Sql 如何使用条件语句插入oracle表?

Sql 如何使用条件语句插入oracle表?,sql,oracle,Sql,Oracle,我需要计算电费 首千瓦0.20美元 第2千瓦为0.30美元 后续KW为1美元 我已经准备好了桌子 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'),

我需要计算电费

  • 首千瓦0.20美元
  • 第2千瓦为0.30美元
  • 后续KW为1美元
  • 我已经准备好了桌子

    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;
    
    插入电子账单(地址ID、读取ID、账单日期、到期日期、账单金额)
    选择截止日期('2020年9月10日','DD-MON-YYYY')的41,63,
    截至日期('2020年10月10日','DD-MON-YYYY'),
    来自读者;
    
    我想我的数学需要一些改进,因为我似乎无法找到一个不需要if-else语句的解决方案


    谢谢大家的帮助

    您可以使用
    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;
    

    您的表
    读取器的架构是什么?使用量本质上是十进制/双精度类型吗?请分享一些示例数据和所需信息output@SupunDeSilva它是双层的。在读卡器中有两个属性,CUR_READING和PREV_READING@Tejash例如,如果(当前读数-上一读数)>1000,则。。。。。否则…我得出的方程式,如果(CUR_READING-PREV_READING)>2000,那么0.2+0.30+(1*((CUR_READING-PREV_READING)-2000))根据您的确切列名更新了答案我不断从中得到缺少的关键字错误..您现在可以检查,我用
    CUR\u READING-PREV\u READING
    替换了第二个WHEN子句中的
    YOUR\u READING\u列
    ,改变了这一点,但我有一个违反唯一约束的错误。我用VALUES而不是SELECT进行了测试,它很有效。并且我的模式对这些值没有唯一的约束。我将GENERATED ALWAYS作为主键的标识