SQL如下:

SELECT DISTINCT
sy_haken_type,
sy_sagyo_type,
sy_kokyaku_cd
FROm
tbl_syukei
WHERE
(sy_sagyo_ymd between '2010-01-01' AND '2012-12-30')AND
(sy_staff_cd <> '' AND sy_staff_cd is not null) AND
(sy_kokyaku_cd <> '' AND sy_kokyaku_cd is not null) AND
sy_kokyaku_cd='800001'
ORDER BY
sy_kokyaku_cd

原SQL是这样的,然后将查询的结果再进行过滤出,所以这里为了解决内存,和释放SQL,就直接在SQL里面进行一次过滤,直接将外部的逻辑加入到SQL语句中

SELECT DISTINCT
    (case when
((sy_haken_type='D' or sy_haken_type is null or sy_haken_type='')and
sy_sagyo_type='0') =true  then '1' else '0' end ) as daliy,
    (case when (sy_sagyo_type in ('1','2'))=true then '1' else '0' end) as  haken,
    (case when ((sy_haken_type in('J','S')) and sy_sagyo_type='0')=true then '1' else '0' end) as  short,
    (case when ((sy_haken_type in('M','L')) and sy_sagyo_type='0')=true then '1' else '0' end) as  ful,
    sy_kokyaku_cd
FROM
    tbl_syukei
WHERE
    (sy_sagyo_ymd  between '2010-01-01' AND    '2012-12-30')AND
    (sy_staff_cd <> '' AND sy_staff_cd is not null) AND
    (sy_kokyaku_cd <> '' AND sy_kokyaku_cd is not null) AND
    sy_kokyaku_cd='800001'
ORDER BY
    sy_kokyaku_cd

查出的结果如下:

这里case when 的使用性质就如同if ,

假如 case when ((sy_haken_type='D' or sy_haken_type is null or sy_haken_type='')and sy_sagyo_type='0') =true

then '1'

else '0'

end

SELECT
(case gensen_type when '00' then 'aa'
when '01' then 'xx'
when '10' then 'bb'
else 'more' end ) as c
FROM
tbl_kokyaku_kyuyo
WHERE
ko_cd = '000002' //两种写法,返回一个值和三个值 SELECT
(case when gensen_type='00' then 'xxx' else 'bbb' end) as c,
(case when gensen_type='01' then 'xxx' else 'bbb' end) as a,
(case when gensen_type='10' then 'xxx' else 'bbb' end) as b
FROM
tbl_kokyaku_kyuyo
WHERE
ko_cd = '000002'

  

用一个表做实验。

将每条数据都进行下过滤的时候也可以用case when

SELECT
case WHEN `user`.id = '' THEN 'guanliyuan' ELSE 'laji' END AS Id,
`user`.`name`,
`user`.age
FROM `user`

查询结果:

这里的语法和VB有点像,if 为真then 一个表达式,else 一个表达式,然后end结束,

这个语法能将很多的数据进行一遍过滤

SQL 中case when then else 用法的更多相关文章

  1. 数据库SQL中case when函数的用法

    Case具有两种格式,简单Case函数和Case搜索函数.这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 简单Cas ...

  2. SQL中的LIKE语句的用法

    SQL中的LIKE语句的用法 内容 在SQL结构化查询语言中,LIKE语句有着至关重要的作用.LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串), ...

  3. MySQL中case when的基本用法总结

    MySQL中case when的基本用法总结原创Backcanhave7 最后发布于2018-12-06 15:14:15 阅读数 439 收藏展开MySQL中的case when有用两种用法,官方文 ...

  4. 【SQL】SQL中Case When的用法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...

  5. SQL中CASE 的用法 转载

    sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.              例如,下面的语句显示中文年月 select getdat ...

  6. SQL中Case When的使用方法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END       --Case搜索 ...

  7. sql中case when语句的使用-来自网摘文章

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. SQL中Case的使用方法(上篇)(转)

    http://www.cnblogs.com/fxgachiever/archive/2010/09/09/1822106.html Case具有两种格式.简单Case函数和Case搜索函数. --简 ...

  9. sql中group by 和having 用法解析

    --sql中的group by 用法解析:-- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.--它的作用是通过一定的规则将一个数据集划分成若干个小的 ...

随机推荐

  1. zabbix 通过key 获取

    zabbix:/root# zabbix_get -s 192.168.2.224 -k "perf_counter[\Processor(_Total)\% Processor Time] ...

  2. 检查并创建目录mkdir

    os.listdir() os.path.isdir() os.path.join() os.mkdir() # -*- coding:utf-8 -*- import os,sys def mkdi ...

  3. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    一张图看懂开源许可协议,开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozi ...

  4. 【转】Android自定义控件

    原文网址:http://blog.163.com/ppy2790@126/blog/static/103242241201382210910473/ 开发自定义控件的步骤: 1.了解View的工作原理 ...

  5. 深入设计模式(二)——单例模式(Singleton Pattern)

    一.单例模式介绍 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯一实例,它就可以严格地控制客户怎样访问它 ...

  6. PHP 遍历文件目录

    /********************** 一个简单的目录递归函数 第一种实现办法:用dir返回对象 ***********************/ function tree($directo ...

  7. Android——Cocosd2d-x手机游戏开发学习思路

    手机APP应用如雨后春笋般冒了出来,而在众多的APP应用中,游戏占据了半壁江山.它丰富着人们的业余生活,增进了人们之间的沟通交流.也有许多开发的朋友对游戏开发情有独钟,他们不止是享受着有很多的人们去下 ...

  8. 把谷歌等webkit内核浏览器变为输入文本编辑器的方法

    只需要在地址栏输入 data:text/html, <html contenteditable> 回车后即可看到效果

  9. Linux 上的游戏 Supertuxkart

    Linux 上玩游戏 Supertuxkart 中午休息的时候,打开Supertuxkart游戏,这个是GNU下的一款3D赛车游戏,制作精美,玩法简单.最有趣的是,我连接笔记本的外接键盘被侦测出来是M ...

  10. Deploy maven on Linux OS

    1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2.进入下载文件夹,找到下载的文件,运 ...