当前位置:七道奇文章资讯数据防范MSSQL防范
日期: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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL语句分组获得记录的第一条数据的办法
  • SQL语句(T-SQL汇总) 用T-SQL画出这些图形
  • SQL语句删除2条反复数据一条保存一条
  • 在SQL Server中利用SQL语句查询一个存储历程被别的全部的存储历程引用的存储历程名
  • sqlserver 改正列名及表名的sql语句
  • SQLServer顶用T—SQL号令查询一个数据库中有哪些表的sql语句
  • SQLServer中字符串左对齐或右对齐显示的sql语句
  • 解析SQL语句性能3种办法分享
  • sqlserver中去除字符串中持续的脱离符的sql语句
  • sqlserver中求字符串中汉字的个数的sql语句
  • 50个常用sql语句 网上风行的学生选课表的例子
  • Sql Server 索引利用情形及优化的相关Sql语句分享
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .