首页 > 数据库技术 > 详细

SQL---CASE表达式

时间:2020-03-18 14:07:02      阅读:53      评论:0      收藏:0      [点我收藏+]

CASE表达式是用来判断条件的,条件成立时返回某个值,条件不成立时返回另一个值。

 

语法:

CASE WHEN ... THEN ...

           WHEN ... THEN ...

           ELSE ... 

END

(注:各分支返回的数据类型需一致。)

(注:when子句一定要有排他性,因为当when子句为真时,剩余的when子句会被忽略。)

 

CASE
    WHEN ComparsionCondition THEN result
    WHEN ComparsionCondition THEN result
    ELSE other
 END

 

CASE表达式的用途:

1,转换现有的编码方式

例子:

student_name  score
Ming          80
Red           92
Huzi          100
Mung          60
student_name  score
Ming          良
Red           优
Huzi          优
Mung          中
SELECT student_name,
            (CASE WHEN score>=90 THEN 
                      WHEN score<90 AND score>=75 THEN 
                      WHEN score<75 AND score>=60 THEN 
             ELSE 不及格 END) AS score
FROM Score;

 

2,构建交叉表

例子:

 Date     Result
 1900-1-11900-1-11900-1-11900-1-21900-1-2 胜
          胜  负
 1900-1-1 2   1
 1900-1-2 2   0
SELECT DISTINCT Date,
SUM(CASE WHEN Result= THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN Result= THEN 1 ELSE 0 END) AS 
FROM Test
GROUP BY Date;

 

3,行列转换

product_type sum_price
clothes       5000
office        600
kitchen       10000
sum_price_clothes sum_price_office sum_price_kitchen
5000              600              10000
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_office,
            SUM(CASE WHEN product_type = 厨房用品 THEN sale_price
                ELSE 0 END) AS sum_price_kitchen
FROM Product;

 

4,生成特定排序方式

例子:对下表按B、D、C、A的顺序进行排序

item x y z
A    1 2 3
B    5 5 2
C    4 7 1
D    3 3 8
SELECT item, x, y, z
FROM t
ORDER BY ( CASE WHEN item="B" THEN 1
                           WHEN item="D" THEN 2
                           WHEN item="C" THEN 3
                           WHEN item="A" THEN 4
                           ELSE NULL
                  END );

 

SQL---CASE表达式

原文:https://www.cnblogs.com/HuZihu/p/12244794.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!