SQL语句中的CASE
来源:互联网 发布:mac双系统能玩守望先锋 编辑:程序博客网 时间:2024/05/16 01:09
为什么要使用CASE?
当我们的代码中需要根据从数据库中取出的某个变量的值来进行逻辑判断的话 我们可以执行先执行一边SQL 得到需要的变量的值 并且用高级编程语言进行逻辑分支判断
但是更简单的方法就是直接在SQL查询中使用CASE 它就相当于SQL中的CASE SWITCH 或者 IF THEN ELSE
基本语法:
CASE WHEN CONDITION1 THEN ACTION1ELSE ACTION2 END
CASE 后面如果跟一个变量的话 这时它就相当于CASE SWITCH
1.CASE可以用在SELECT语句中 不包含逻辑判断 只有给出一个值 用在等号 = 后面
这段代码的意思在于根据Productline值的不同 赋给Category不同的值 此时CASE的用法相当于Switch
SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN 'Mountain' WHEN 'T' THEN 'Touring' WHEN 'S' THEN 'Other sale items' ELSE 'Not for sale' END, NameFROM Production.ProductORDER BY ProductNumber;
2.CASE用在SELECT中更复杂的一种情况 包含逻辑判断
CASE后面不再跟变量 而是WHEN后面跟一个逻辑表达式
SELECT ProductNumber, Name, 'Price Range' = CASE WHEN ListPrice = 0 THEN 'Mfg item - not for resale' WHEN ListPrice < 50 THEN 'Under $50' WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' ENDFROM Production.ProductORDER BY ProductNumber ;
3.在ORDER BY 语句中使用CASE
SELECT BusinessEntityID, SalariedFlagFROM HumanResources.EmployeeORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC ,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END;
SELECT BusinessEntityID, LastName, TerritoryName, CountryRegionNameFROM Sales.vSalesPersonWHERE TerritoryName IS NOT NULLORDER BY CASE CountryRegionName WHEN 'United States' THEN TerritoryName ELSE CountryRegionName END;
4.在HAVING语句中使用CASE
SELECT JobTitle, MAX(ph1.Rate)AS MaximumRateFROM HumanResources.Employee AS eJOIN HumanResources.EmployeePayHistory AS ph1 ON e.BusinessEntityID = ph1.BusinessEntityIDGROUP BY JobTitleHAVING (MAX(CASE WHEN Gender = 'M' THEN ph1.Rate ELSE NULL END) > 40.00 OR MAX(CASE WHEN Gender = 'F' THEN ph1.Rate ELSE NULL END) > 42.00)ORDER BY MaximumRate DESC;
- SQL语句中的CASE
- sql 语句中的CASE 用法
- Sql sever中的CASE语句
- SQL中的CASE WHEN语句
- SQL中的CASE WHEN语句
- SQL查询语句中的条件判断CASE
- sql中的case when 语句详解
- sql语句中的条件控制 case ..when.
- SQL中的coalesce函数与case语句
- case语句在SQL中的使用方法
- sql语句中的条件控制 case ..when
- proc sql 语句中的case 表达
- sql语句中的case、while等使用
- sql语句中的case when用法
- SQL中的coalesce函数与case语句
- sql server 中的case when then 语句
- 活用SQL中的IF ELSE;CASE语句
- sql语句中的判断语句case when else end
- 学习笔记一
- 菜鸟也疯狂,易语言自绘控件__进度条、滑块条
- VS2005 下VTK的配置过程(亲自验证)
- 菜鸟也疯狂,易语言自绘控件__编辑框、组合框
- ArrayList.add(Object) 前面数据被覆盖的问题
- SQL语句中的CASE
- 类与类之间的有哪几种关系,并说明
- 凸包
- Linux Shell编程基础
- 测试技术之--V模型
- 一波三折,终于把密码找回来了,多谢CSDN的管理员童靴。
- 规范自己的JavaScript书写 – Dojo Javascript 编程规范
- 为Android 2.3增加希伯来语支持的注意事项
- LaunchPad 中图标重复解决办法