SQL Server---Case When用法简介

Casewhen 用法简介

上一篇博客使用了casewhen解决了数据汇总的问题,那么这一篇博客我将简单的介绍一下关于case when的使用。

CASEWHEN的表达形式

1、简单的case函数

--简单Case函数
CASE letterType
WHEN '干部介绍信' THEN '1'
WHEN '转递档案通知单' THEN '2'
ELSE '其他' END 

2、case搜索函数

--Case搜索函数
CASE
WHEN letterType='干部介绍信' THEN '1'
WHEN letterType='转递档案通知单' THEN '2'
ELSE '其他' END

简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

CASEWHEN 在语句中不同位置的用法

1、  SELECT CASE WHEN用法

select userID ,
count(CASE WHEN letterType='干部介绍信' then '1' end)干部介绍信数,
count(CASE WHEN letterType='转递档案通知单' then '1' end)转递档案通知单数
from T_LettersRecord GROUP BY userID

运行结果:

2、 WHERE CASE WHEN 用法

SELECT l.letterType, u.realName
   FROM T_LettersRecord as l, T_User as u
  WHERE (CASE WHEN l.letterType = '干部介绍信' AND
                   u.userID = '1'
                THEN1
              WHENl.letterType = '干部介绍信' AND
                   u.userID <> '1'
                THEN1
              ELSE0
           END) = 1

运行结果:

3、 GROUP BY CASE WHEN 用法

SELECT
CASE WHEN salary <= 3000 THEN 'T1'
WHEN salary > 3000 AND salary <=8000  THEN'T2'
WHEN salary > 8000 AND salary <=12000  THEN'T3'
WHEN salary > 12000 AND salary <= 20000 THEN 'T4'
ELSE NULL END 级别名称, -- 别名命名
COUNT(*)
FROM    t_userSalary
GROUP BY
CASE WHEN salary <= 3000 THEN 'T1'
WHEN salary > 3000 AND salary <=8000  THEN'T2'
WHEN salary > 8000 AND salary <=12000  THEN'T3'
WHEN salary > 12000 AND salary <= 20000 THEN 'T4'
ELSE NULL END;

运行结果:

本文简单的介绍了一下CASEWHEN的简单使用方法,希望能够对读者能够有所帮助。

参考文章:

http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.htmleshizhan

http://www.cnblogs.com/yazdao/archive/2009/12/09/1620482.html影子网络科技有限公司

时间: 2024-08-14 15:52:55

SQL Server---Case When用法简介的相关文章

行转列:SQL SERVER PIVOT与用法解释

转自:http://www.cnblogs.com/lwhkdash/archive/2012/06/26/2562979.html 在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据: INSERT INTO WEEK_INCOME SELECT '星期一',1000 UNION ALL SELECT '星期二',2000 UNION

软件开发中 SQL SERVER 任务的用法

在软件开发中,经常性会用到定时任务.这个时候你可能会想到线程.但是事实中,线程方法比较麻烦.容易出错,资源竞争等问题,设计起来让你很头痛. 现在给大家提供一个新的思路,用SQL SERVER 的任务管理器来解决问题. 解决下列问题: 1.商品有购买时间限制.比如定时上线,下线.竞拍结束自动通知用户. 2.数据库中某个数据发生了变化,需要执行一段代码块(这里面的代码并不是存储过程代码,意指c#,JAVA等代码). 3.某个数据发生了变化,需要执行某个动作.(不是立马执行) 针对上面的问题,我们总结

SQL Server之 (一) 数据库简介 SQL Server环境配置 数据库基础知识

   前言 这个是我工作两年多后,再次从最基础的SQL入门开始,认真的学一遍SQL Server,捡漏和巩固都有;因为自己刚开始学的时候,总是心烦气躁,最近换工作,发现1到2年经验,问到基础性的东西还是很多,这个时候需要的是扎实的基础功夫,所以一系列打击+反省后,自己节假日在家从最基础重新认识一下SQL Server,继续沉淀一下.哪里有不对或需深入探讨,请直接留言或者小窗我;欢迎~ (一) 数据库简介   SQL Server环境配置   数据库基础知识 1.什么是数据库,数据库有哪些特点,为

SQL SERVER BCP的用法

转自:https://www.cnblogs.com/fishparadise/p/4809014.html 前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储过程,生成所需的数据文件,甚至可以生成包含SQL语句和数据的脚本文件.各有优缺点,以适用不同的需求.下面介绍大容量数据导出导入的利器——BCP实用工具.同时在后面也介绍BULK INSERT导入大容量数据,以及BCP结合BULK INSERT做数据接口的实践(在SQL2008R2上实践). --打开

sql server case when

case具有两种格式:简单Case函数和Case搜索函数 简单case函数 实例:CASE sex     when '1' then '男'     when '2' then'女'     else '其他'  end Case搜索函数  实例: CASE WHEN sex = '1' THEN '男'      WHEN sex = '2' THEN '女'      ELSE '其他'  END --还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自

关于sql的case when用法简述

刚入手公司项目,需要添加一个功能,用到了SQL的case when以及concat SELECT eve.cc, eve.sc, case concat(cc,sc) WHEN '00' THEN '' WHEN '10' THEN '得意先' WHEN '01' THEN '仕入先' WHEN '11' THEN '得意先/仕入先' ELSE '' END as client_supplier_class FROM ( SELECT bd0.id, bd0.created, bd0.creat

SQL中CASE 的用法 转载

sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.              例如,下面的语句显示中文年月 select getdate() as 日期,case month(getdate()) when 11 then '十一' when 12 then '十二' else substring('一二三四五六七八九十', month(getdate()),1) end+'月' as 月份 ===================

Sql server中DateDiff用法【转】

记录下来.每次使用都忘记.... DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 ) date-part :year | quarter | month | week | day | hour | minute | second | millisecond 参数 date-part    指定要测量其间隔的日期部分. 有关日期部分的详细信息,请参见日

Sql Server事务简单用法

1 var conStr = "server=localhost;database=Data;user=sa;pwd=123456"; 2 using (var connection = new SqlConnection(conStr)) 3 { 4 connection.Open(); 5 var sql = 6 string.Format( 7 "update dbo.AutoStationData set Temperture={0} where StationNum

SQL SERVER:CASE判断空,错误一例

-----错误判断------------------------------------------------------------------------------------ SELECT policy_jq_no,policy_sy_no, CASE policy_jq_no WHEN  '' THEN policy_sy_no ELSE policy_jq_no END policy_no FROM ZY_SURVEY_VISIT order by FLOW_ID desc --