>source

Oracle 11g를 사용하고 있습니다.

두 개의 테이블이 있습니다.

student_name, 강좌, 학비, 그리고 'BIT'또는 'MIT'이면 학비가 10 % 감액되는 할인 된 비용 컬럼을 표시하고 싶습니다.

다음 쿼리를 찾았지만 오류가 발생합니다.

ORA-00923: FROM keyword not found where expected:

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";

  • 답변 # 1

    당신이 사용할 수있는 decode 다음과 같이 :

    SELECT Student.student_name, 
           Specification.course, 
           Specification.specification_name, 
           decode(Specification.course, 'BIT', 0.9, 'MIT', 0.9, 1)
             * Specification.fee AS "DISCOUNTED FEE"
      FROM Student
      JOIN Specification ON Student.specification_id = Specification.specification_id;
    
    

  • 답변 # 2

    귀하의 질문에서 당신은 CASE WHENSELECT 대신에 FROM

    SELECT Student.student_name, Specification.course, Specification.specification_name, Specification.fee,
           (CASE Specification.cours WHEN 'BIT' THEN 0.9 * Specification.fee
                 WHEN 'MIT' THEN 0.9 * Specification.fee
            ELSE Specification.fee END) "DISCOUNTED FEE"
    FROM Student
    JOIN 
        Specification ON Student.specification_id = Specification.specification_id;
    
    

    나는 사용하고 싶다 CASE WHENIN 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;
    
    

관련 자료

  • 이전 hadoop - 색조 설치 - 앱 만들기 :실패한
  • 다음 python - Float Column의 npnan 항목을 채우면 ValueError가 발생합니다 채우기 값은 범주에 있어야합니다