SQL – 10.流程函数

空值处理函数

ISNULL(expression,value) :如果expression不为空则返回expression,否则返回value。

SELECT ISNULL(FName,'佚名') as 姓名 FROM T_Employee 

 

Case 函数用法

  • (1)单值判断,相当于switch case
    CASE expression
    WHEN value1 THEN returnvalue1
    WHEN value2 THEN returnvalue2
    WHEN value3 THEN returnvalue3
    ELSE defaultreturnvalue
    END

 

 

T_Customer表

image

例子

select Fname,

(

case Flevel

when 1 then '普通客户'

when 2 then '会员'

when 3 then 'vip'

else '游客'

end 

) as 客户类型

from T_Customer

 

image

 

  • (2)相当于if…else…else….
    CASE
    WHEN condition1 THEN returnvalue1
    WHEN condition 2 THEN returnvalue2
    WHEN condition 3 THEN returnvalue3
    ELSE defaultreturnvalue
    END

 

 

例子:

image

image

 

 

练习1:

表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

 

练习2:

单号   金额
Rk1     10
Rk2     20
Rk3     -30
Rk4     -10
将上面的表输出为如下的格式:
单号   收入   支出
Rk1     10       0
Rk2     20       0
Rk3      0        30
Rk4      0        10

 

练习3:

有一张表T_Scores,记录比赛成绩
Date                 Name   Score 
2008-8-8          拜仁       胜
2008-8-9          奇才       胜
2008-8-9          湖人       胜
2008-8-10        拜仁       负
2008-8-8          拜仁       负
2008-8-12        奇才       胜
要求输出下面的格式:
Name   胜     负
拜仁   1 2
湖人   1 0
奇才   2 0
数据和参考答案见备注
注意:在中文字符串前加N,比如N’胜’

 

答案:

1.

select (case when a>b then a else b 

end),(case when b>c then b else c end ) 

from t 

2.

select ID,(case when money <0 then 0 else money end) AS 收入,(case when money >0 then 0 else abs(money) end) as 支出  from T_Bill

image

3.

select Name,sum(case when score ='胜' then 1 else 0 end) as '胜',
sum(case when score = '负' then 1 else 0 end) as '负' 
from T_bascketball 
group by name

 

 

image

你可能感兴趣的:(sql)