首页 > 解决方案 > 将 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";

标签: sqloraclecase

解决方案


从您的问题来看,您似乎需要使用CASE WHENinSELECT而不是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 WHENwithIN让 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;

推荐阅读