您的位置:首页 > 其它

case when then else end

2012-08-27 18:16 561 查看
一、

(行遍历问题,面试)一道SQL语句面试题,关于group by

表内容:bs

bsrq res

2005-05-09 胜

2005-05-09 胜

2005-05-09 负

2005-05-09 负

2005-05-10 胜

2005-05-10 负

2005-05-10 负

二、查询

1、select case when condition then result [when....][else result] end。

case子句可以用于任何表达式可以有效存在的地方。condition是一个返回boolean的表达式。如果结果为真,那么case表达式的结果就是符合条件的result;如果结果为假,那么以相同方式搜寻任何随后的when子句。如果没有when condition为真,那么case表达式的结果就是在else子句里的值。如果省略了else子句而且没有匹配的条件,结果为null。

select bsrq,'胜'=sum(case when res='胜' then 1 else 0 end),

'负'=sum(case when res='负' then 1 else 0 end)

from bs group by bsrq

2、这个简单的case表达式是上面的通用形式的一个特殊的变种。

case expression when value then result [when] [else result] end

先计算expression的值,然后与所有在when子句里声明的value对比,直到找到一个相等的。如果没有找到匹配的,则返回在else子句里的result(或者null)。

select bsrq,'胜'=sum(case res when '胜' then 1 else 0 end),

'负'=sum(case res when '负' then 1 else 0 end)

from bs group by bsrq
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: