沃梦达 / IT编程 / 数据库 / 正文

oracle case when 语句的用法详解

Oracle CASE WHEN 语句是一种条件表达式,它可以根据指定的条件执行不同的代码块,类似于程序中的 if-else 逻辑判断。

Oracle CASE WHEN 语句的用法详解

什么是 Oracle CASE WHEN 语句

Oracle CASE WHEN 语句是一种条件表达式,它可以根据指定的条件执行不同的代码块,类似于程序中的 if-else 逻辑判断。

Oracle CASE WHEN 语句的语法

Oracle CASE WHEN 语句的基本语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN condition3 THEN result3
    ...
    ELSE result
END

其中,CASE 是关键字,后面跟随一个表达式或字段名;WHEN 子句指定条件和对应的结果;ELSE 是可选的,如果所有条件都不匹配,则执行 ELSE 子句中的结果。END 表示 CASE WHEN 结束。

Oracle CASE WHEN 语句的示例1

假设有一个名为 sales 表,其中包含商品名称、销售数量和销售售价等列。现在要统计每种商品的总销售额,并根据总销售额的不同范围分为 A、B、C、D 四个等级。可以使用如下 SQL 语句实现:

SELECT 
    product_name, 
    SUM(sales_qty * sales_price) AS total_sales, 
    CASE 
        WHEN SUM(sales_qty * sales_price) >= 10000 THEN 'A'
        WHEN SUM(sales_qty * sales_price) >= 5000 AND SUM(sales_qty * sales_price) < 10000 THEN 'B'
        WHEN SUM(sales_qty * sales_price) >= 2000 AND SUM(sales_qty * sales_price) < 5000 THEN 'C'
        ELSE 'D'
    END sales_level
FROM sales
GROUP BY product_name

在上面的 SQL 语句中,通过 SUM 函数计算了每种商品的总销售额,并使用 CASE WHEN 语句根据不同的范围分为 A、B、C、D 四个等级。

Oracle CASE WHEN 语句的示例2

假设有一个名为 employee 表,其中包含员工编号、姓名、性别和工作年限等列。现在要查询所有员工的信息,并根据工作年限的不同范围分为 A、B、C、D 四个等级。如果工作年限不满足任何一个范围,则显示为“未知”。可以使用如下 SQL 语句实现:

SELECT 
    employee_id,
    employee_name, 
    gender,
    years_of_service,
    CASE 
        WHEN years_of_service >= 10 THEN 'A'
        WHEN years_of_service >= 5 AND years_of_service < 10 THEN 'B'
        WHEN years_of_service >= 2 AND years_of_service < 5 THEN 'C'
        ELSE '未知'
    END work_level
FROM employee

在上面的 SQL 语句中,使用 CASE WHEN 语句根据工作年限的不同范围分为 A、B、C、D 四个等级,并使用 ELSE 子句将不满足任何一个范围的记录显示为“未知”。

结论

Oracle CASE WHEN 语句是一个强大的条件表达式,可以根据不同的条件执行不同的代码块。它的语法简单明了,使用方便,能够满足复杂的逻辑判断需求。

本文标题为:oracle case when 语句的用法详解