下面是关于 "SQL Server中CASE的使用方法" 的完整攻略。
一、概述
在 SQL Server 中,CASE 表达式是一个非常重要且常用的逻辑表达式,可以用于在 SQL 查询中根据条件进行数据的筛选和分组等操作。本文将介绍 CASE 的使用方法及示例,分上下篇介绍。
二、语法
CASE 表达式语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
…
ELSE resultN
END
其中:
condition1
、condition2
等表示条件,可以使用比较运算符(如<
,<=
,=
,<>
,>
,>=
);逻辑运算符(如AND
,OR
,NOT
)以及 LIKE 等表达式。result1
、result2
等表示对应的结果,可以是值、列、表达式或嵌套表达式等。
三、示例1
假设有一个订单表 orders
,其中包含字段 order_id
、order_date
、customer_id
、order_amount
和 order_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_id
、product_name
、category_id
、vendor_id
和 product_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的使用方法(上下篇) - Python技术站