写点什么

SQL 数据库:CASE 表达式

发布于: 2020 年 11 月 17 日
SQL数据库:CASE表达式

CASE表达式在区分情况时使用,分为简单CASE表达式和搜索CASE表达式两种,搜索CASE表达式包含简单CASE表达式的全部功能。

简单CASE表达式

WHEN <表达式> THEN <表达式>
WHEN <表达式> THEN <表达式>
WHEN <表达式> THEN <表达式>
. . .
ELSE <表达式>
END



搜索CASE表达式

CASE WHEN <求值表达式> THEN <表达式>
WHEN <求值表达式> THEN <表达式>
WHEN <求值表达式> THEN <表达式>
. . .
ELSE <表达式>
END

WHEN子句中的< 求值表达式 >就是类似“列 = 值”这样,返回值为真值(TRUE/FALSE/UNKNOWN)的表达式,也可以是使用 =、!= 或者 LIKE、BETWEEN 等谓词编写出来的表达式。



假设通过CASE表达式将A ~C的字符串加入到商品种类当中:

SELECT product_name,
CASE WHEN product_type = '衣服' THEN 'A:' || product_type
WHEN product_type = '办公用品' THEN 'B:' || product_type
WHEN product_type = '厨房用具' THEN 'C:' || product_type
END AS abc_product_type
FROM Product;



假设实现根据商品种类计算出的销售单价的合计值,可以通过以下形式实现:

SELECT product_type, SUM(sale_price) AS sum_price
FROM Product
GROUP BY product_type;

上述结果是三列的值,可以利用CASE表达式进行行列转换:

SELECT
SUM(CASE WHEN product_type = '衣服'
THEN sale_price
ELSE 0 END) AS sum_price_clothes,
SUM(CASE WHEN product_type = '厨房用具'
THEN sale_price
ELSE 0
END) AS sum_price_kitchen,
SUM(CASE WHEN product_type = '办公用品'
THEN sale_price
ELSE 0
END) AS sum_price_office
FROM Product;

参考资料

  • 书籍《SQL基础教程(第2版)》

发布于: 2020 年 11 月 17 日阅读数: 25
用户头像

正向成长 2018.08.06 加入

想要坚定地做大规模数据处理(流数据方向),希望结合结合批处理的传统处理方式,以及之后流批混合处理方向进行学习和记录。

评论

发布
暂无评论
SQL数据库:CASE表达式