oracle的case when语句,oracle的case when是什么意思
示例:(1)查询用户表中的数据。
select u.id,u.realname,U . SEX from users u
查询结果如下
ID实名性别
10082松XX
2 10084林XX 1
西XX街3号10087号
10100胡XX
5 10102龙XX 1
.
(2)上表结果中的‘性别’用代码表示,希望代码用中文表示。您可以在语句中使用CASE语句。
选择你的身份证,你的真实姓名,你的性别,
(案例u.sex
当1时,则为“男性”
当2是“女性”时
否则为“空”
结束
)性别
来自用户
u;查询结果
ID真实姓名性别性别
10082松XX空
2 10084林XX 1男
3 10087西XX是空的
10100胡XX空。
10102龙XX 1男
.
如果你不想让‘性别’列出现在列表中,声明如下
选择u.id,u.realname,
(案例u.sex
当1时,则为“男性”
那么当2
女性
否则为“空”
结束
)性别
来自用户u;(3)通过和案例相结合,可以实现分段统计。
现在举个例子,我想统计一下上表中所有性别的人数。sql语句如下所示
挑选
Sum (case u. sex当1然后1 else 0 end)男,
sum( case u.sex
当2然后1否则0结束)母,
总和(当u.sex 1和
U.sex 2 then 1 else 0 end)性别为空。
来自用户
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)女
总和(当
U.sex 1和u.sex 2然后1 else 0 end)性别为空。
来自用户
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
上例中只有一个分组字段,实现了一级统计;如果有多个分组字段,应该可以实现多级统计。如果有居民统计表,里面有人口的信息,人口居住的城市,区,街道等。如果想统计深圳的人口数据,实现以下统计结果,可以通过多级分组来实现。
划分男性居民和女性居民
深圳
南山区
粤海
科学与技术
宝安区
新安
当…时格的语法
情况
当某件事
那么什么时候最好
一些东西b
其他
一些东西
结束