CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE

子句中使用 CASE。

首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT =
CASE
WHEN THEN
WHEN THEN
ELSE
END

在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:

USE pubs
GO
SELECT
Title,
'Price Range' =
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
FROM titles
ORDER BY price
GO

对于informix不能用以上形式,可以如下:
USE pubs
GO
SELECT
Title,
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
Price Range
FROM titles
ORDER BY price
GO

这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:

SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
GO

你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:

USE pubs
GO
SELECT
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END AS Range,
Title
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
ORDER BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
GO

对于informix中形式有所不同,例子
select
case when td_acc1_no[1,3]='610' then get_contrast(td_acc1_no)
                 else get_contrast(td_td_acct_no)
                 end sx_acct_no
,               sum(td_actu_amt) sx_bal
from dcc_tdacnacn where td_td_acct_no in ('6107111001014107111000050182',
'6107111001014107111000050168')
group by   1

注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。

---------------------------------------------------------------------
select a.djid as '调拨单号',a.djrq as '调拨时间', '1' as '供货单位编号',a.lsesum as '进价总金额',a.czy as '操作人',b.ksid as '调拨目标单位编号'
from T2_Yp_lyd a,T1_ks b where djrq>'2010-09-12 10:38:14.000' and a.ks=b.ks

转载于:https://www.cnblogs.com/520cc/archive/2012/10/23/2735849.html

case when then end.sql相关推荐

  1. case when用法java,sql之case when用法详解

    简单CASE WHEN函数只能应对一些简单的业务场景,而CASE WHEN条件表达式的写法则更加灵活. CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句. 简单CASE WHEN函 ...

  2. SQL中Case和convert()

    SQL语句之 case 和 convert 一.SQL之case 1 1.基本用法 :作为sql语句中的判断条件 case 字段 when 条件1 THEN 结果 Else 结果 END 2.比较用法 ...

  3. 【SQL】update中使用case when

    1.创建测试表及数据 CREATE TABLE graduates ( name varchar(255) , income int4(255) ); INSERT INTO graduates VA ...

  4. 【NCRE】初遇 SQL SERVER 的 CASE WHEN

    我们的c#中经常用到了switch case,那么在sql中是否也有这样的一种格式或者是功能呢? CASE WHEN 是sql server中的重要关键字之一,也许你对他有很多的理解,但是他真的有很多 ...

  5. sql中的case函数的使用

    以下内容首发于我的个人博客网站: http://riun.xyz/ 参考连接: https://www.cnblogs.com/HDK2016/p/8134802.html 一.分组时不同情况的处理 ...

  6. sql语句中的case语句

    sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作. 首先,让我们看一下CASE的语法.在一般的SELECT中,其语法格 ...

  7. PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

    DBA可以使用的工具很多,对于SQL Server来说,有查询分析器.事件探查器.命令行工具等,其中SQL语句是重中之重,但是PowerShell的出现使得DBA又多了一种选择. 测试脚本下载 本系列 ...

  8. db2case语句_DB2 常用的SQL语句

    1.组合语句执行 BEGINATOMIC 表达式1分号空格/回车 表达式2分号空格/回车 END 2.应该限制访问权限的表(应该撤销这些表PUBLIC SELECT访问权) SYSCAT.DBAUTH ...

  9. sql server T-SQL 基础

    SQL语言按照用途可以分为如下3类: ①DDL(Data Definition Language)  数据定义语言: 定义修改和删除数据库.表.索引和视图等 ②DML(Data Manipulatio ...

  10. 如何在SQL SELECT中执行IF…THEN?

    如何在SQL SELECT语句中执行IF...THEN ? 例如: SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * ...

最新文章

  1. 计算机学院大学生程序设计竞赛(2015’11)1007 油菜花王国
  2. 【知识星球】超3万字的网络结构解读,学习必备
  3. 【数据结构】绪论部分
  4. 解决webpack 打包出现额外的xxxx.LICENSE.js文件
  5. Python 21 Django 实用小案例1
  6. socket buffer套接字缓存
  7. 最长单调递增子序列_最长递增子序列(动态规划 + 二分搜索)
  8. linux主机熵值过小,tomcat在linux启动应用慢解决方式
  9. ROS的学习(二十一)使用时间和TF
  10. 机器学习-决策树(XGBoost、LightGBM)
  11. 计算机java二级_关于Java计算机二级考试内容。
  12. 基于QT的音视频采集推流实时传输播放数据发布系统 文档+项目源码+答辩PPT
  13. win7如何关闭uac
  14. 如何将1080P的腾讯视频QLV格式转换成MP4视频呢
  15. 功率放大电路工作状态
  16. 天地图和谷歌地图静态图像素坐标和经纬度坐标互转
  17. 观察者模式在游戏开发中的应用
  18. 32位二进制里有多少个1
  19. 结构化数据和非结构化数据的分析
  20. 计算机硬件技术基础(太原理工大学):第二章

热门文章

  1. pyqt5程序的图标
  2. 如何使用优化算法手动拟合回归模型
  3. 普式变换,仿射变换,人脸对齐
  4. 安装php服务图解,图文详解安装PHP运行环境
  5. truffle Migration是什么
  6. work-conserving scheduling 是什么
  7. 以太坊虚拟机 EVM(1)EVMC interpreter
  8. crash fault-tolerant protocols和Byzantine fault-tolerant protocols区别
  9. 微信小程序云开发教程-微信小程序的JS基础-js文件基本结构与生命周期
  10. python 递归目录和文件 修改主组_python下递归遍历目录和文件的方法介绍