SQL中的CASE WHEN用法(8)

来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:50 点击:
    
STD_ID  MAIN_class     
    
------  ----------     
    
100     1     
    
200     3     
    
如果使用Case函数,我们只要一条SQL语句就可以解决问题,具体如下所示     
    
SELECT  std_id,     
    
CASE WHEN COUNT(*) = 1  --只选择一门课程的学生的情况     
    
THEN MAX(class_id)     
    
ELSE MAX(CASE WHEN main_class_flg = 'Y'    
    
THEN class_id     
    
ELSE NULL END    
    
)     
    
END AS main_class     
    
FROM Studentclass     
    
GROUP BY std_id;     
    
运行结果     
    
STD_ID   MAIN_class     
    
------   ----------     
    
100      1     
    
200      3     
    
300      4     
    
400      5     
    
500      6     
    
通过在Case函数中嵌套Case函数,在合计函数中使用Case函数等方法,我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。     
    
最后提醒一下使用Case函数的新手注意不要犯下面的错误     
    
CASE col_1     
    
WHEN 1       THEN 'Right'    
    
WHEN NULL  THEN 'Wrong'    
    
END    
    
在这个语句中When Null这一行总是返回unknown,所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL,这是一个错误的用法,这个时候我们应该选择用WHEN col_1 IS NULL。    
  
  
  
数据库   
有一张表table1 结构如下.  
  
table1:  
  
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • SQL小技巧系列 --- 行转列合并
  • sql server 列转行

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1