sql - 将 CASE 与表连接一起使用
问题描述
我正在使用 Oracle 11g。
我有两张桌子:
我想显示 student_name、课程、费用和一个带有折扣费用的列,如果它是“BIT”或“MIT”,费用将减少 10%。
我想出了以下查询,但它给出了一个错误:
ORA-00923: 在预期的地方找不到 FROM 关键字:
SQL> SELECT Student.student_name, Specification.course, Specification.specification_name, Specification.fee
2 FROM Student
3 JOIN Specification ON Student.specification_id = Specification.specification_id
4 CASE Specification.course WHEN 'BIT' THEN 0.9 * Specification.fee
5 WHEN 'MIT' THEN 0.9 * Specification.fee
6 ELSE Specification.fee END "DISCOUNTED FEE";
解决方案
从您的问题来看,您似乎需要使用CASE WHEN
inSELECT
而不是FROM
SELECT Student.student_name, Specification.course, Specification.specification_name, Specification.fee,
(CASE WHEN Specification.cours = 'BIT' THEN 0.9 * Specification.fee
WHEN Specification.cours = 'MIT' THEN 0.9 * Specification.fee
ELSE Specification.fee END) "DISCOUNTED FEE"
FROM Student
JOIN
Specification ON Student.specification_id = Specification.specification_id;
我想使用CASE WHEN
withIN
让 SQL 更干净。
SELECT Student.student_name, Specification.course, Specification.specification_name, Specification.fee,
(CASE WHEN Specification.cours IN ('BIT','MIT') THEN 0.9 * Specification.fee
ELSE Specification.fee END) "DISCOUNTED FEE"
FROM Student
JOIN
Specification ON Student.specification_id = Specification.specification_id;
推荐阅读
- php - 如何在laravel中使用url传递`?`?
- javascript - 使用 ES6 类扩展内置数组 - 方法不是函数错误
- python - 如何使用 python API 列出所有数据流作业
- kubernetes - 将已部署 pod 的数量从部署/复制集/有状态传递到 kubernetes 中的那些 pod
- python - 如何解决 CNN 中的输入形状问题?
- python - Python 的 round 函数是如何工作的
- performance - 在 pyglet 中绘制具有 3500 个标签的批次时 FPS 下降
- html - 电子商务网站项目未在响应式平板电脑/移动设备视图中正确显示
- amazon-web-services - 如何在 AWS CDK 的输入区域部署 elasticsearch 集群?
- r - Shiny:通过选项卡(通过模块)传播选定的选项