一、搜寻CASE运算式
语法 :
CASE WHEN <判断式1> THEN <回应结果1> WHEN <判断式2> THEN <回应结果2> WHEN <判断式3> THEN <回应结果3> …… ELSE <回应结果>END
说明 :
从判断WHERE子句中的<判断式>开始,即判断真伪值,
→若结果为真值(TRUE),则回传至THEN子句的<回应结果>,
→若结果为非真值(FALSE),则移至下一个WHERE子句再来判断,
→若全部WHEN子句皆不为真,则回传ELSE回应结果,
→END结束全部过程 (最后的END不能省略)
<< 接下来使用这个资料表 >>
Ex1 : 使用CASE运算式将早餐分类分别加上A、B、C字串
SELECT food_name,CASE WHEN food_catalg = '热食' THEN 'A:'+ food_catalg WHEN food_catalg = '炸物' THEN 'B:'+food_catalg WHEN food_catalg = '饮料' THEN 'C:'+ food_catalg ELSE NULL END AS ABCFROM food
执行结果
二、CASE运算式可以写入的位置
说明 : 由于CASE属于运算式,所以所有可以写入运算式的位置,都可以写入CASE运算式,下面会介绍使用CASE运算式将SELECT叙述的结果由纵向转横向
Ex2 : 使用CASE运算式将SELECT叙述的结果由纵向转横向
SELECT SUM(CASE WHEN food_catalg = '热食'THEN buy_price ELSE 0 END) AS sum_热食,SUM(CASE WHEN food_catalg = '炸物'THEN buy_price ELSE 0 END) AS sum_炸物,SUM(CASE WHEN food_catalg = '饮料'THEN buy_price ELSE 0 END) AS sum_饮料FROM food;
执行结果
Ex3 : GROUP BY子句无法做到纵向转横向
SELECT food_catalg, SUM(buy_price) AS sum_priceFROM foodGROUP BY food_catalg;
执行结果