sqlserver教程网

当前位置: 主页 > sql语言 >

SQL中的CASE WHEN用法

时间:2015-07-26 14:01来源:www.sqlserver.net.cn 作者:admin 点击:
方法一: select (case TitleOfCourtesy when Ms. then 女士 when Mr. then 男士 else end) as TitleOfCourtesy from dbo.Employees 方法二: select (case when TitleOfCourtesy = Ms. then 女士 when TitleOfCourtesy = Mr. then 男士 else
方法一:
select (case TitleOfCourtesy when 'Ms.' then '女士' when 'Mr.' then '男士' else '' end) as TitleOfCourtesy from dbo.Employees

方法二:
select (case when TitleOfCourtesy = 'Ms.' then '女士' when TitleOfCourtesy = 'Mr.' then '男士' else '' end) as TitleOfCourtesy from dbo.Employees


假设数据库有一张表名为student的表。

 

如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数 怎么写SQL语句?即要生成下结果表

答案 :select sex ,count ( case province when '广东省' then '广东省' end )as 广东省 ,count ( case province when '江西省' then '江西省' end )as 江西省 ,count ( case province when '浙江省' then '浙江省' end )as 浙江省 from student group by sex

count()函数即根据给定的范围和group by(统计方式) 而统计行数据的条数

 

1.  select sex from student (查询数据表中的存在的男女条数)

 

2.select sex, count (*) as num from student group by sex  (查询表中男女数量)

3.select sex ,province, count (*)as num from student group by sex,province (查询各省男女数量)

 

4.select sex ,province, count (province)as num from student group by sex,province (查询各省男女数量)

结果跟上图一样:这说明换不换都一样。又有count (province)等价于 count(case province when '浙江省' then '浙江省' else province end )

但是如果 缩小范围 count(case province when '浙江省' then '浙江省' end ) 那么 看下面

5.select sex ,province, count ( case province when '浙江省' then '浙江省' end )as num from student group by sex,province

即统计男女数量范围限定在浙江省 再精简一下即下面

6.select sex, count ( case province when '浙江省' then '浙江省' end ) as 浙江省 from student group by sex

已经接近我们的要求了,现在只要加上另几个字段就是了

7.select sex ,count ( case province when '广东省' then '广东省' end )as 广东省 ,count ( case province when '江西省' then '江西省' end )as 江西省 ,count ( case province when '浙江省' then '浙江省' end )as 浙江省 from student group by sex

 case when then 知识点

(1) select (case province when '浙江省' then '浙江' when '江西省' then '江西' end  ) as 省份 from student

如果默认范围如果没全包含则为空 像上图的广东省为空

(2)select (case province when '浙江省' then '浙江' when '江西省' then '江西' else province end  ) as 省份 from student




(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容
  • SQL TOP 的用法

    SQL Server 的语法: SELECT TOP number|percent column_name(s)FROM table_name 等...

  • SQL测试题1

    一、问答题 1、数据库包含哪些哪几种后缀名的文件必须,这些...