sqlcase when用法

在SQL中,CASE WHEN语句用于根据一个或多个条件评估表达式并返回不同的值。它的语法包含WHEN子句(条件表达式和返回表达式)、ELSE子句(默认表达式)和END关键字。以下是CASE WHEN语句的两种主要格式及其用法示例:

  1. 简单Case函数
  • 格式:CASE column_name WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_value END

  • 示例:

    SELECT 
        CASE job_level 
            WHEN '1' THEN 'Level 1' 
            WHEN '2' THEN 'Level 2' 
            WHEN '3' THEN 'Level 3' 
            ELSE 'Unknown' 
        END AS job_level_name 
    FROM dbo.employee;
    ```

2. **Case搜索函数** <b class="card40_249__sup_a7f6" data-sup="sup">4</b>- 格式:`CASE WHEN column_name = value1 THEN result1 WHEN column_name = value2 THEN result2 ... ELSE default_value END`<b class="card40_249__sup_a7f6" data-sup="sup">1</b>

- 示例:

```sql
    UPDATE employee 
    SET e_wage = CASE 
        WHEN job_level = '1' THEN e_wage * 1.97 
        WHEN job_level = '2' THEN e_wage * 1.07 
        WHEN job_level = '3' THEN e_wage * 0.93 
        ELSE e_wage 
    END;
    ```

### 注意事项<b class="card40_249__sup_a7f6" data-sup="sup">5</b>- **返回值** :`CASE WHEN`语句会返回第一个匹配条件的结果,忽略之后的条件<b class="card40_249__sup_a7f6" data-sup="sup">1</b>- **默认值** :如果没有条件匹配,可以提供一个`ELSE`子句来定义默认返回值。

- **多列应用** :可以在一个`SELECT`语句中使用多个`CASE WHEN`表达式,分别应用于不同的列。

- **分组统计** :`CASE WHEN`语句常用于条件统计,可以对数据进行分类并执行特定操作<b class="card40_249__sup_a7f6" data-sup="sup">3</b>。

### 示例<b class="card40_249__sup_a7f6" data-sup="sup">5</b>:

以下是一个更复杂的示例,展示了如何在`SELECT`语句中使用`CASE WHEN`进行条件统计<b class="card40_249__sup_a7f6" data-sup="sup">3</b>:

```sql
SELECT 
    customer_id, 
    SUM(CASE WHEN product_type = 'A' THEN sales ELSE 0 END) AS total_sales_A, 
    SUM(CASE WHEN product_type = 'B' THEN sales ELSE 0 END) AS total_sales_B 
FROM sales_table 
GROUP BY customer_id;

在这个示例中,我们根据product_type对每个客户的销售额进行了分类统计,并将结果分别命名为total_sales_Atotal_sales_B

通过这些示例,你可以看到CASE WHEN语句在SQL中的多种用途,包括条件筛选、值转换和分组统计等。希望这些信息对你有所帮助!

Top