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

sqlserver中Case的使用方法(上下篇)

下面是关于 SQL Server中CASE的使用方法 的完整攻略。

下面是关于 "SQL Server中CASE的使用方法" 的完整攻略。

一、概述

在 SQL Server 中,CASE 表达式是一个非常重要且常用的逻辑表达式,可以用于在 SQL 查询中根据条件进行数据的筛选和分组等操作。本文将介绍 CASE 的使用方法及示例,分上下篇介绍。

二、语法

CASE 表达式语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    …
    ELSE resultN
END 

其中:

  • condition1condition2 等表示条件,可以使用比较运算符(如 <, <=, =, <>, >, >=);逻辑运算符(如 AND, OR, NOT)以及 LIKE 等表达式。
  • result1result2 等表示对应的结果,可以是值、列、表达式或嵌套表达式等。

三、示例1

假设有一个订单表 orders,其中包含字段 order_idorder_datecustomer_idorder_amountorder_status。现在需要根据 order_status 字段的不同值,统计不同状态的订单金额。

SELECT 
    SUM(CASE WHEN order_status='待发货' THEN order_amount ELSE 0 END) AS amount_unshipped,
    SUM(CASE WHEN order_status='已发货' THEN order_amount ELSE 0 END) AS amount_shipped,
    SUM(CASE WHEN order_status='已完成' THEN order_amount ELSE 0 END) AS amount_completed
FROM orders;

以上 SQL 将根据每个订单的状态对其金额进行分类汇总,得到三个结果:待发货订单金额、已发货订单金额和已完成订单金额。CASE 表达式实际上是对数据的筛选和分组的一种简便方式。

四、示例2

假设有一个商品表 products,其中包含字段 product_idproduct_namecategory_idvendor_idproduct_price。现在需要根据商品价格的不同范围,将商品进行分类,并计算每个分类的商品数量。

SELECT 
    CASE 
        WHEN product_price<=10 THEN '0-10元'
        WHEN product_price<=20 THEN '10-20元'
        WHEN product_price<=50 THEN '20-50元'
        WHEN product_price<=100 THEN '50-100元'
        ELSE '>100元'
    END AS price_range,
    COUNT(*) AS product_count
FROM products
GROUP BY 
    CASE 
        WHEN product_price<=10 THEN '0-10元'
        WHEN product_price<=20 THEN '10-20元'
        WHEN product_price<=50 THEN '20-50元'
        WHEN product_price<=100 THEN '50-100元'
        ELSE '>100元'
    END;

以上 SQL 将根据每个商品的价格对其进行分类,并且统计每个分类的商品数量。通过 CASE 表达式,我们可以快速有效地实现商品分类,并进行数量统计。

结语

本文简单介绍了 SQL Server 中 CASE 的使用方法及示例,CASE 表达式是 SQL 查询中非常常用的逻辑表达式。在实际使用中,CASE 表达式可以灵活运用于多种场景,例如分组统计、数据清洗等。

本文标题为:sqlserver中Case的使用方法(上下篇)