sql - 如何使用条件语句插入 oracle 表?
问题描述
我需要计算电费,
- 第一个 KW 0.20 美元
- 第 2 千瓦 0.30 美元
- 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 语句的情况下找到解决方案。
谢谢大家的帮助!
解决方案
您可以使用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;
推荐阅读
- ruby-on-rails - 我在 ActiveRecord::MigrationContext#new 中将什么传递给 schema_migration
- python - Python - 从列表中生成矩阵
- c# - 我想编写一个脚本,我可以将 name 变量用于统一 2d 中的另一个场景
- pip - 在 Raspberry Pi 中安装 Apache Beam 时出现 pyarrow 错误
- sql - 从联接更新列失败
- spring-boot - Spring cloud sleuth 注解:自动装配不起作用
- php - 如何在 Akeneo PIM API 搜索中获取产品数量
- c# - 无法在 C# .cs 文件中检索 ASP.NET webform 的选定下拉列表值
- jms - 在 Gatling 中发送 JMS 消息,但未收到回复 - 我哪里出错了?
- c++ - 如何在一个合并单元格中设置多个复选框?