日期:2011-01-25 23:11:00 来源:本站整理
SQL语句中CASE WHEN的利用实例[MSSQL防范]
本文“SQL语句中CASE WHEN的利用实例[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
SQL中的CASE WHEN语句是常常要用到的,下面将结合实例,为您详解CASE WHEN语句的利用,供您参考,但愿对您学习SQL语句能有所帮忙.
一张表数据以下
1900-1-1 胜
1900-1-1 胜
1900-1-1 负
1900-1-2 胜
1900-1-2 胜
写出一条SQL语句,使检索后果以下:
胜 负
1900-1-1 2 1
1900-1-2 2 0
我顺手建了这样一个表:
create table test(Date varchar(50) null, Result varchar(50) null)
并将上面的数据都插入到表中.
经过一番尝试和改正,终于得到了答案:
select distinct Date, sum(case Result when '胜' then 1 else 0 end) as '胜', sum(case Result when '负' then 1 else 0 end) as '负' from test group by date
这里我要说的,其实是SQL中case when的用法.它在普通的SQL语句中仿佛并不常见,我本人从前也没在实际项目中利用过.碰到近似问题,常常通过代码或多条SQL语句实现.大概是以下这种丑陋的SQL,并且还伴随着很多潜在的BUG(如,当没有‘负’时).
select a.date,a.a1 胜,b.b1 负 from (select date,count(date) a1 from test where Result ='胜' group by date) a, (select date,count(date) b1 from test where Result ='负' group by date) b where a.date=b.date
我们无妨来复习一下CASE WHEN的语法.
CASE WHEN有两种用法,一种是近似上面例子中那样的简单CASE函数:
CASE result WHEN '胜' THEN 1 WHEN '负' THEN 2 ELSE 0 END
还有一种是CASE搜索函数:
CASE WHEN result='胜' THEN 1 WHEN result='负' THEN 2 ELSE 0 END
此中result='胜'可以替换为其他条件表达式.假若有多个CASE WHEN表达式符合条件,将只返回第一个符合条件的子句,别的子句将被忽视.
用CASE WHEN语句可以简化我们平常工作中碰到的很多问题.如性别在表中存的是数字1、2,但是但愿查询出来男、女时,可以这样:
select (case Gender when 1 then '男' when 2 then '女' else '其他' end) as Gender from Table1
是不是很强盛呢?
<以上是“SQL语句中CASE WHEN的利用实例[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论