近期几天的工作本来组长是安排我用mindfocion画几个图,本来以为难点是这个控件的使用,可是开发的时候才发现由于数据量有点多,所以在开发的时候汇总这些信息倒是费了我许多的功夫,最后总结一下就是写了几个SQL语句,这里与大家分享一下。假设有须要用的就太好了。

先说一下需求,组长让我画一个图。要求是把近期几年的**信息统计一下,比如2012年这个**交接了多少次,2013年多少次,总共多少次。想想也不难是吧,于是组长问我怎么样,我就轻松的接下来了。

可是曾经一直接触的是简单的SQL语句和一些EntityFramework等工具,对于SQL语句就真的把我难住了。写了一天的SQL语句,也是没有达到想要的效果。后来上网看了一下,原来SQL里边有一个Case When语句。

用途

当我们在写SQL语句的时候,假设遇到这么一种情况,就是假如。

。。

。则。

。,否则。

。比如,增加是城市是北京,就返回时中国城市,假设是东京,就返回日本城池。否则返回西欧城市。

这个请款下我们就能够用到这个,比例如以下边的小样例。

select
case when t.name = '北京' then '中国'
case when t.name = '东京' then '日本'
else '西欧'
end
from test1 t

当然这还是一个简答的应用,比如我这次项目中用的CaseWhen的使用方法。就用到了条件筛选和SQL语句,比如我要查询2014年叫lisi的人有多少,2015年lisi的人有多少。那么下边的语句就能帮我简单的实现

select to_char(t.birthday ,'yyyy'),
sum(case when to_char(t.birthday ,'yyyy')= '2014' and t.name = 'lisi' then 1
when to_char(t.birthday ,'yyyy')= '2015' and t.name = 'lisi' then 1
else 0
end) as firYear
from test1 t group by to_char(t.birthday ,'yyyy');

大家自己观察发现我在上边用到了Group by来进行分组。由于假设没有这个的话,查询出来的结果例如以下图

可是假设使用了group by分组的话,效果例如以下

实现的效果不一样,所以大家须要什么样子的表格。就怎么查询就能够。

事实上上边说了这么多,好像就是一个if...else...,可是这个是全部数据库都能够实现的。可是在Oracle。另一个类似于咱们的三目运算的一个小语法。

select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
from employees;

当然假设咱们的逻辑简单能够用这个,只是逻辑略微复杂一些的建议不要用,感觉没有CaseWhen的逻辑清晰,并且代码的移植性也不太好。毕竟仅仅有Oracle能用。

总结一下,假设我们须要在数据库中进行逻辑推断。不防用一下咱们的CaseWhen,或者Oracle的decode。加上group by 效果更佳。

数据库之Case When的更多相关文章

  1. 数据库编程Case when

    数据库编程题 1. 姓名 日期 是否上班 张三 星期二 是 张三 星期三 是 李四 星期一 是 王五 星期二 是 张三 星期二 是 写出一条SQL语句输出下列结果 姓名 星期一 星期二 星期三 张三 ...

  2. 反爬统计 数据库 sql CASE

    -- 经排查日志,发现ordertest.com下的url检测,频繁<Response [403]>,Forbidden;再进一步查询数据库数据:逐日统计错误临时表test_error_t ...

  3. 数据库的case when 使用实例

    本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50471210 需求很简单,我有一个部门和部门的请假申请表.表数据简 ...

  4. mysql数据库中case when 的用法

    场景1:比如说我们在数据库存了性别的字段,一般都是存0 和 1 代表男和女   然后我们会得到0和1之后在java中判断 ,很麻烦有么有?其实我们完全可以在sql中判断好之后拿来现成的.就是在sql中 ...

  5. sql 查看数据库物理文件路径

    方式一:用于查询all数据库,适用于SQL2005及以上版本. USE [Master] GO /****** 对象 :  Table [dbo].[Master]    脚本日期 : 06/29/2 ...

  6. mysql-函数CASE WHEN 语句使用说明

    mysql数据库中CASE WHEN语句. case when语句,用于计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以 ...

  7. PowerDesigner概述(系统分析与建模)以及如何用PowerDesigner快速的创建出这个数据库

    PowerDesigner是Sybase公司推出的一个集成了企业架构,UML(统一建模语言)和数据库的CASE(计算机辅助软件工程)工具.它 不仅可以用于系统设计和开发的不同阶段(即业务分析,概念模型 ...

  8. 21.Android之SQLite数据库学习

    Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...

  9. mysql中 case when的使用

    SELECT a.hsid, a.house_code, a.sale_date, a.pjid, COUNT( sdid ) AS num, b.hsid, b.pscid, b.hscode, b ...

随机推荐

  1. [Android]RecyclerView的简单演示样例

    去年google的IO上就展示了一个新的ListView.它就是RecyclerView. 下面是官方的说明,我英语能力有限,只是我大概这么理解:RecyclerView会比ListView更具有拓展 ...

  2. 人人都能当大厨的语音做菜神器——demo试用

    开发一款语音做菜软件的想法在我脑海里闪烁了非常久,一直苦于没有时间.趁着这几天老板的项目接近了尾声,我也有时间把我当初的想法付诸于实践. 可能有朋友对我的想法还不甚了解,我这里简介一下,具体的介绍就请 ...

  3. SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、)

    SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELE ...

  4. Yii学习笔记之中的一个(安装与基础环境的配置)

    0. 下载yii http://www.yiiframework.com/download/ 1. 訪问 basic 基础文件夹下的 web 文件夹 出现图1 的错误 :    Invalid Con ...

  5. IOC与DI区别

    (1)IOC:控制反转,把对象创建交给spring进行配置. (2)DI:依赖注入,向类里面的属性中设置值. (3)关系:依赖注入不能单独存在,需要在IOC的基础之上完成操作.

  6. UINavi中push控制器的时候隐藏TabBar

    当一个UITabbarController管理多个UINavigationController的时候,我们又从这每一个UINavigationController中push一个ViewControll ...

  7. Spark Streaming概念学习系列之SparkStreaming的高层抽象DStream

    不多说,直接上干货! SparkStreaming的高层抽象DStream 为了便于理解,Spark Streaming提出了DStream抽象,代表连续不断的数据流. DStream 是一个持续的R ...

  8. 日志记录~log4.net

    1. 添加Log4net引用 2. 添加配置文件 Log.config <?xml version="1.0" encoding="utf-8"?> ...

  9. 微信公众号测试账号-redirect_uri域名与后台配置不一致,错误代码:10003

    微信公众号测试账号-redirect_uri域名与后台配置不一致,错误代码:10003 进入公众平台测试账号. 登录公众账号--"开发者中心"--"公众平台测试账号&qu ...

  10. 简述RNN Recurrent Neural Networks

    本文结构: 什么是 Recurrent Neural Networks ? Recurrent Neural Networks 的优点和应用? 训练 Recurrent Neural Networks ...