select empno,ename,
case job
when 'PRESIDENT' THEN '总裁'
when 'MANAGER' THEN '经理'
else '打杂的'
end
from emp
select empno,ename,
case when SAL>=4000 THEN '有钱'
when SAL>2500 and SAL<4000 then '中等'
else '贫困'
end
from emp
实例演示:
(1)查询表users中的数据。
select u.id,u.realname,U.SEX from users u;
查询结果如下
ID REALNAME SEX
1 10082 松XX
2 10084 林XX 1
3 10087 西XX
4 10100 胡XX
5 10102 龙XX 1
......
(2)上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用CASE语句。
select u.id,u.realname,U.SEX,
( case u.sex
when 1 then '男'
when 2 then '女'
else '空的'
END
) 性别
from users u;
select u.id,u.realname,U.SEX, ( case u.sex when 1 then '男' when 2 then '女' else '空的' END ) 性别 from users u; |
查询结果
ID REALNAME SEX 性别
1 10082 松XX 空的
2 10084 林XX 1 男
3 10087 西XX 空的
4 10100 胡XX 空的
5 10102 龙XX 1 男
......
如果不希望列表中出现"sex"列,语句如下
select u.id,u.realname,
( case u.sex
when 1 then '男'
when 2 then '女'
else '空的'
END
) 性别
from users u;
select u.id,u.realname, ( case u.sex when 1 then '男' when 2 then '女' else '空的' END ) 性别 from users u; |
(3)将sum与case结合使用,可以实现分段统计。
例如现在我希望将上表中各种性别的人数进行统计,sql语句如下
select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空
from users u;
select sum( case u.sex when 1 then 1 else 0 end) 男性, sum( case u.sex when 2 then 1 else 0 end) 女性, sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空 from users u; |
执行结果如下
男性 女性 性别为空
1 41 15 0
如果学校内有数千名学生进行了考试,想统计60分以下、60-80分、80-100分的总人数,就可以使用这样的语句来实现。只是条件不同而已。
(4)如果sum、case when结合group by使用,可以进行分组分段统计。
如,我希望统计users表中每个创建者创建的男性、女性、无性别的用户总数(数据表中有一个字段creator_id,表示创建者的ID),语句如下
select u.creator_id 创建者ID,
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空
from users u
group by u.creator_id;
select u.creator_id 创建者ID, sum( case u.sex when 1 then 1 else 0 end) 男性, sum( case u.sex when 2 then 1 else 0 end) 女性, sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空 from users u group by u.creator_id; |
查询结果如下
创建者ID 男性 女性 性别为空
1 0 0 0
2 10000 35 12 0
3 11100 0 0 0
4 11060 0 0 0
5 11040 0 0 0
6 11080 2 0 0
7 10281 3 3 0
8 10580 1 0 0
上例中只有一个分组字段,实现了1级统计;如果有多个分组字段,应该可以实现多级统计了。如有居民统计表,保存了人口信息、人口所在市、区、街道信息等,欲统计深圳市的人口数据,实现统计如下统计结果的话,就可以通过多级分组实现。
区划 男性居民 女性居民
深圳市
南山区
粤海
科技
宝安区
新安
(5)case when的语法
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END
CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <somethingB> ELSE <somethingE> END
|
分享到:
相关推荐
SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 代码如下:–简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种: 1.执行SQL查询语句时,将返回查询得到的记录集。用法为: Set 对象变量名=连接对象.Execute("SQL 查询语言") Execute方法调用后,会自动...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳 数据库 2010-07-27 11:14:26 阅读201 评论0 字号:大中小 订阅 近日在巨轮着手车间负荷...当结合以上两种方法的优点,利用C#自己开发出数据导入工具是最佳选择。
9.2.1 为每种数据库编写不同的SQL语句 9.2.2 使用语法交集 9.2.3 使用SQL实体对象 9.2.4 使用ORM工具 9.2.5 使用SQL翻译器 9.3 CowNewSQL翻译器 9.3.1 CowNewSQL支持的数据类型 9.3.2 CowNewSQL支持...
9.2.1 为每种数据库编写不同的SQL语句 9.2.2 使用语法交集 9.2.3 使用SQL实体对象 9.2.4 使用ORM工具 9.2.5 使用SQL翻译器 9.3 CowNewSQL翻译器 9.3.1 CowNewSQL支持的数据类型 9.3.2 CowNewSQL支持...
9.2.1 为每种数据库编写不同的SQL语句 9.2.2 使用语法交集 9.2.3 使用SQL实体对象 9.2.4 使用ORM工具 9.2.5 使用SQL翻译器 9.3 CowNewSQL翻译器 9.3.1 CowNewSQL支持的数据类型 9.3.2 CowNewSQL支持...
9.2.1 为每种数据库编写不同的SQL语句 9.2.2 使用语法交集 9.2.3 使用SQL实体对象 9.2.4 使用ORM工具 9.2.5 使用SQL翻译器 9.3 CowNewSQL翻译器 9.3.1 CowNewSQL支持的数据类型 9.3.2 CowNewSQL支持...
9.2.1 为每种数据库编写不同的SQL语句 9.2.2 使用语法交集 9.2.3 使用SQL实体对象 9.2.4 使用ORM工具 9.2.5 使用SQL翻译器 9.3 CowNewSQL翻译器 9.3.1 CowNewSQL支持的数据类型 9.3.2 CowNewSQL支持...
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 1.9.2 准备 create table t_user ( username varchar2(20), ...
SQL server 中的变量分为两种,全局变量和局部变量。其中全局变量的名称以________ 字符开始,有系统定义和维护。局部变量以 _________ 字符开始,由用户自己定义和赋值。 一个事务的操作必须是具备以下四个属性:...
掌握T-SQL语句的使用。 实验内容: 1.定义一个表变量,用来存储两名学生的学号,姓名,所在系。 2.编写一个自定义的函数,该函数接受一个学生姓名,返回其学生表中基本信息及选课情况。 3.试用CASE语句输出学生...
--使用ALTER TABLE 语句为已经创建的表添加主键约束、外键约束 --主键 ALTER TABLE Customer ADD CONSTRAINT PK_Customer PRIMARY KEY(CusNo) GO ALTER TABLE Product ADD CONSTRAINT PK_Product PRIMARY KEY...
字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') <2>.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,...