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'),
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作为主键的标识