case表达式是在区分情况时使用的,这种情况的区分在编程中通常称为条件分支。
case表达式的语法分为简单case表达式和搜索case表达式两种。
case表达式会从对最初的when语句进行求值开始。所谓求值就是要调查该表达式的真值是什么。如果结果为真,就返回then语句中的表达式,case表达式的执行到此为止。如果不为真,就跳转到下一条when子句的求值之中,如果直到最后when子句为止返回结果都不为真,那么就会返回else中表达式,执行终止。
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
else null
end as abc_product_type
from Product;
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;