近期几天的工作本来组长是安排我用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. &lt;LeetCode OJ&gt; 100. Same Tree

    100. Same Tree Total Accepted: 100129 Total Submissions: 236623 Difficulty: Easy Given two binary tr ...

  2. 2015.04.21,外语,读书笔记-《Word Power Made Easy》 12 “如何奉承朋友” SESSION 32

    TEASER PREVIEW 如何描述这些人: 很友好.容易相处的人: 不知疲倦的人: 简单.直率..aboveboard([ə'bʌv'bɔ:d] adv. 光明正大地, 率直地 adj. 光明正大 ...

  3. bzoj3713: [PA2014]Iloczyn(乱搞)

    3713: [PA2014]Iloczyn 题目:传送门 题解: 随手一发水题x2 直接离线啊,斐波那契到了第五十个就炒鸡大了 代码: #include<cstdio> #include& ...

  4. 利用DBMS_SQLTUNE优化SQL

    DBMS_SQLTUNE优化SQL是在oracle10g才出来的新特性,使用它能很大程度上方便对sql的分析和优化.执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限: stat& ...

  5. notepad++ 查找引用(Find Reference)(适用于c c++及各类脚本比如lua、python等)

    在程序开发过程中,程序员经常用到的一个功能就是查找引用(Find Reference),Visual Studio里面的对应功能是“查找所有引用”(Find All References). 我在使用 ...

  6. 使用Jquery Ajax请求 下载压缩文件

    使用第三方组件:  ICSharpCode.SharpZipLib 给按钮绑定一个点击事件 后台处理: public ActionResult DownZip(string ids) { if (st ...

  7. Python笔记(四)

    # -*- coding:utf-8 -*- # 控制语句 # if...else... print "********************1********************** ...

  8. HDU 1757 矩阵快速幂加速递推

    题意: 已知: 当x<10时:f(x)=x 否则:f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + --+ a9 * f(x-10); 求:f(x ...

  9. POJ 3020 Hungary

    一道建图题-- // by SiriusRen #include <cstdio> #include <cstring> using namespace std; #defin ...

  10. CentOS 6.7操作系统安装

    如果由于是显卡驱动不兼容的话,在选择安装界面按tab键,进入命令行,然后在命令行后加上 nodmraid 关键字回车开始安装. 接下来选择hard driver   选择最后一个分区进行系统安装,然后 ...