0

假设这个查询功能正常:

SELECT 
   first_name,
   consultant_id,
   CASE consultant_id
    WHEN 1 THEN 'First Consultant'
    WHEN 2 THEN 'Second Consultant'
   END
FROM consultant
ORDER BY first_name;

为什么我不能使用一些布尔逻辑添加另一个 WHEN 子句,而不是上面两个 WHEN 子句中隐含的等于?例如:

SELECT 
   first_name,
   consultant_id,
   CASE consultant_id
    WHEN 1 THEN 'First Consultant'
    WHEN 2 THEN 'Second Consultant'
    WHEN BETWEEN 3 AND 12 THEN 'Everyone else'
   END
FROM consultant
ORDER BY first_name;

引发此错误:

ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:
Error at Line: 7 Column: 10

有没有办法在不使用更详细的情况下完成这项工作:

SELECT 
   first_name,
   consultant_id,
   CASE 
    WHEN consultant_id = 1 THEN 'First Consultant'
    WHEN consultant_id = 2 THEN 'Second Consultant'
    WHEN consultant_id BETWEEN 3 AND 12 THEN 'Everyone else'
   END
FROM consultant
ORDER BY first_name;
4

2 回答 2

2

此外,根据您的要求,您可以使用:

SELECT
   first_name,
   consultant_id,
   CASE consultant_id
    WHEN 1 THEN 'First Consultant'
    WHEN 2 THEN 'Second Consultant'
    ELSE 'Everyone else'
   END
FROM consultant
ORDER BY first_name
/
于 2018-06-05T13:55:31.437 回答
2

是的,你是对的,不幸的是,短语法中不可能有条件。

文档将短语法 称为“simple_case_expression”

CASE expr WHEN comparision_expr THEN return_expr
于 2018-06-05T13:50:02.747 回答