精华内容
下载资源
问答
  • when表时间用法
    千次阅读
    2021-06-03 15:43:40

    sql中case when还是比较常见的用法。经常会出现一段时间不用,相关写法与语法又记不太清楚的情况。干脆就记一下,以备不时之需。

    1.准备数据

    现在有一张表xxx,里面有一个字段叫basicinfo_credit_status,类型为整数,1,2,3,4,5这种。其中1表示授信通过,4表示授信拒绝。

    2.case的两种写法

    case一般有两种写法: 简单case函数和case搜索函数。

    简单case函数的写法如下

    case basicinfo_credit_status
    	when 1 then "pass"
    	when 4 then "reject"
    	else "other"
    end
    

    case搜索函数的写法如下

    case 
    when basicinfo_credit_status = 1 then "pass"
    when basicinfo_credit_status = 4 then "reject"
    else "other"
    end
    

    对照上面两种写法,不难看出其优缺点:
    简单case函数的写法比较简洁明了,能实现基本的功能与需求。
    搜索函数代码相对较为复杂,但是也能实现一些比较复杂的功能,比如复杂的判定逻辑。

    select basicinfo_credit_status,
     (case basicinfo_credit_status when 1 then "pass" when 4 then "reject" else "other" end) as status
      from xxx limit 20;
    
    +--------------------------+---------+--+
    | basicinfo_credit_status  | status  |
    +--------------------------+---------+--+
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    +--------------------------+---------+--+
    
    select basicinfo_credit_status, 
    (case when basicinfo_credit_status = 1 then "pass" when basicinfo_credit_status = 4 then "reject" else "other" end) as status 
    from xxx limit 20;
    
    +--------------------------+---------+--+
    | basicinfo_credit_status  | status  |
    +--------------------------+---------+--+
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    +--------------------------+---------+--+
    
    

    3.分段统计

    case语句经常与sum语句一起使用,可以实现分段统计的功能。
    比如我们需要统计授信通过的人数是多少,授信未通过的人数是多少,可以用如下sql语句。

    select 
    sum(case when basicinfo_credit_status = 1 then 1 else 0 end) as is_credit_pass,
    sum(case when basicinfo_credit_status = 4 then 1 else 0 end) as is_credit_reject 
    from xxx;
    

    最后可以得到结果

    +-----------------+-------------------+--+
    | is_credit_pass  | is_credit_reject  |
    +-----------------+-------------------+--+
    | num1         | num2          |
    +-----------------+-------------------+--+
    
    
    更多相关内容
  • CASE WHEN用法

    千次阅读 2022-04-30 21:01:16
    1.case when语法 在SQL中,“Case When”语句用于选择判断,在执行时先对...2.1 结构和数据 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for student

    1.case when语法

    • 在SQL中,“Case When”语句用于选择判断,在执行时先对条件进行判断,然后根据判断结果做出相应的操作;
    • 格式
      CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END

    2.适用场景

    • 2.1 表结构和数据

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for student
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student`  (
      `studentId` int(9) NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `studentName` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '姓名',
      `grade` varchar(4) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '年级',
      `major` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '专业',
      `clazz` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '班级',
      `institute` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '学院',
      `tel` varchar(11) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '电话号码',
      `email` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '电子邮件',
      `pwd` varchar(16) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '密码',
      `cardId` varchar(18) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '身份证号',
      `sex` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '性别',
      `role` varchar(1) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '2' COMMENT '角色(0管理员,1教师,2学生)',
      PRIMARY KEY (`studentId`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 20172670 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '学生信息表' ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of student
    -- ----------------------------
    INSERT INTO `student` VALUES (20154001, '隔壁老王', '2015', '计算机科学与技术', '2', '软件工程学院', '13585439532', 'gblw@163.com', '123456', '3412312', '', '2');
    INSERT INTO `student` VALUES (20154084, '大咸鱼', '2015', '计算机科学与技术', '2', '软件工程学院', '13658377857', '13658377857@sina.cn', '123456', '124123124535', '', '2');
    INSERT INTO `student` VALUES (20155003, '张大宝', '2015', '信息工程', '1', '软件工程学院', '15583829425', '15583829425@163.com', '123456', '3242342', '', '2');
    INSERT INTO `student` VALUES (20155007, '翠花', '2015', '网络工程', '1', '软件工程学院', '18734538457', '18734538457@163.com', '123456', '2423423', '', '2');
    INSERT INTO `student` VALUES (20155008, '小王', '2015', '信息工程', '2', '软件工程学院', '15523619564', '15523619564@163.com', '123456', '500234199704022353', '', '2');
    INSERT INTO `student` VALUES (20172147, '阿联', '2017', '移动终端软件开发', '2', '软件工程学院', '13576217034', '201726702147@jxnu.edu.cn', '123456', '20172670214', '', '2');
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    • 2.2可以将已知数据按照某种方式进行分组.

    select studentId,
    (CASE grade WHEN 2015 THEN '学长' ELSE '学弟' END) as 同届
    from student;
    

    在这里插入图片描述

    • 2.3 用一个SQL语句完成不同条件的分组。

    select 
    sum(case grade when 2015 then 1 else 0 end) as '2015届',
    sum(case grade when 2017 then 1 else 0 end) as '2017届'
    from student;
    

    在这里插入图片描述

    展开全文
  • when,while和as引导时间状语从句的用法.doc
  • CASE WHEN 的简单用法

    万次阅读 2021-03-17 13:34:44
    CASE有两种格式简单CASE函数:casesexwhen1then'男'when0then'女'else其他endCASE搜索函数:casewhensex=1then'男'whensex=0then'女'else其他end在工作中数据中会有不少字段是以代码形式表示某些属性值,常见的如...

    CASE有两种格式

    简单CASE函数:case sex when 1 then '男'when 0 then '女'else 其他  end

    CASE搜索函数:

    case when sex=1 then '男'when sex=0 then '女'else 其他  end

    在工作中数据表中会有不少字段是以代码形式表示某些属性值,常见的如:性别为男,在表中以1表示,性别为女,以0表示。当我们做数据统计时,要给领导或客户直观的看到数据,所以我们可以通过case when 来实现。

    员工表emp

    138e20ea9216aee10785908914be7529.png

    通过CASE WHEN来表达语句如下:

    SELECT  empno 员工编号,  ename 员工姓名, 性别 =CASE    ssex     WHEN 1 THEN    '男'     WHEN 0 THEN    '女' ELSE '其他'   END,  job 岗位,  mgr 直接领导编号,  hiredate 入职时间,  sal 薪水,  comm 提成,  deptno 部门编号 FROM  emp

    输出结果:

    这样看结果会不会觉得有点多余,哈哈。只是举个例说明它的用法,case还是很强大的。实际应用场景会有很多类似这样的一个转换或选择。

    又例如,表score ,查询每个同学的成绩。如果成绩大于等于90,显示成绩优秀,成绩小于90大于等于80,显示成绩良好。如果成绩小于80大于60,显示成绩及格。否则显示不及格查询前score表:

    用case查询score表:

    1f192e0a819f18bca79e0699b7976b23.png

    SQL语句如下:

    SELECT  SId,  Sname,  score,  Cname,成绩=CASE    WHEN score >= 90 THEN '优秀'     WHEN score >= 80  AND score = 70  AND score 

    展开全文
  • 本文实例讲述了laravel 框架结合关联查询 when()用法。分享给大家供大家参考,具体如下: Laravel 5.6 里面的when用法: $name = $request->get('name'); //活动标题 $start_time = $request->get('start_time'); /...
  • Mybatis CASE WHEN用法

    千次阅读 2022-04-27 11:34:08
    Mybatis CASE WHEN用法 Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ‘1’ THEN ...

    >Mybatis CASE WHEN 的用法

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

    –Case搜索函数
    CASE WHEN sex = ‘1’ THEN ‘男’
    WHEN sex = ‘2’ THEN ‘女’
    ELSE ‘其他’ END
    两 种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
    –比如说,下面这段SQL,你永远无法得到“第二类”这个结果
    CASE WHEN col_1 IN ( ‘a’, ‘b’) THEN ‘第一类’
    WHEN col_1 IN (‘a’) THEN ‘第二类’
    ELSE’其他’ END

    注意: 改完sql,也要改返回值类型呀,不然会报如下错误

    对应不上字段,查是能查了,但是匹配字段的时候报错!!!

    ERROR 5596 --- [nio-9099-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'push_manner' from result set.  Cause: java.sql.SQLDataException: Cannot determine value type from string '站内信'
    ; Cannot determine value type from string '站内信'; nested exception is java.sql.SQLDataException: Cannot determine value type from string '站内信'] with root cause
    
    com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string '站内信'
    

    实例:

        <select id="getOutStockApply" parameterType="com.boot.reservation.entity.domain.qo.OutStockQO"
                resultType="com.boot.reservation.entity.outstock.OutStockApplyDTO">
                select
                id,
                apply_out_stock_serial_num applyOutStockSerialNum,
                granary_address granaryAddress,
                goods_name goodsName,
                usable_num usableNum,
                goods_level goodsLevel,
                out_num outNum,
                out_date outDate,
                outter_name outterName,
                outter_tel outterTel,
                outter_id outterId,
                out_remark outRemark,
                ( CASE
                                WHEN STATUS = '00' THEN '已保存'
                                WHEN STATUS = '01' THEN '待审核'
                                WHEN STATUS = '02' THEN '已通过'
                                WHEN STATUS = '03' THEN '已驳回'
                              END )	status,
                file_id fileId,
                pic_id picId
                from
                storage_out_stock_apply
                where
                apply_out_stock_serial_num =#{applyOutStockSerialNum}
        </select>
    
    展开全文
  • Oracle中Case When用法

    千次阅读 2021-11-08 20:18:28
    一、Case的两种表达式 1.1、简单的case表达式 SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 ... WHEN 条件1 THEN 条件1的結果 ...二、Case的不同用法 2.1、作为求个
  • 最近大量用到了oracle的sql语句中的case when,闲下来就整理一下。1.根据类别统计假设现在有一组数据如下 其中,0表示单选题,1表示多选题,现在分别要统计单选题跟多选题的数目,就可以这么做啦select sum(case t....
  • MySQL case when 用法

    万次阅读 多人点赞 2018-03-19 15:09:13
    MySQL 的 case when 的语法有两种: CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END CASE WHEN [expr] THEN [result1]…ELSE [default] END 这两种语法有什么区别呢? CASE [col_...
  • Mysql case when then函数使用

    千次阅读 2022-06-06 19:10:06
    Mysql case when then函数使用
  • mybatis中case when用法以及@Param用法

    千次阅读 2021-04-15 22:30:36
    select d.tools_name, null as sum,null as num,dtp.specs,dtp.type, ...count( case when state =0 then 'state' end ) as 在库 , count(case when state =1 then 'state' end) 借出 , count(case when state =2 .
  • 查询数据库中每一周的总调用量总和,一周前...1.查看下结构:一个用户的user_id,对应的一个数量,以及时间类型。这里补充说明一下,date 类型为 bigint ,格式为20190101,表示2019年1月1日,可能有的朋友会疑问为...
  • SQL语句 CASE WHEN用法

    万次阅读 2019-06-03 11:53:59
    select Id , ...=60 then '大于60' --注意各结果的数据类型须一致,int和时间等不能转为字符串没出错 when Id <60 then '小于60' else 'ok' end AS result , OwnId from ContentDetectionRecord...
  • 前段时间一直在思考怎么才能写好一个用户故事,一直...Given-When-Then表达方式可以称之为经典三点论模板,可以使用在需求编写时的用户故事,在程序设计师的架构设计,测试时的用例编写,发现缺陷时的缺陷编写等。Gi...
  • 记录一下case,when,else 的用法

    千次阅读 2019-08-27 14:57:42
    最近写的模块中遇到要根据开始时间和结束时间来判断当前会议的状态: case when NOW() <a.startDate then 0 when endDate <NOW() then 2 else 1 end stateString 当前时间小于开始时间,即会议未开始...
  • 【SQL】SQL Case When用法

    千次阅读 2019-07-06 18:00:00
    case when sql中计算条件列表,并返回多个可能的结果表达式之一。 CASE 表达式有两种格式:1、CASE 简单表达式,它通过将表达式与一组简单的表达式进行比较来确定结果。2、CASE 搜索表达式,它通过计算一组布尔...
  • SQL的case when then else end语句的用法

    千次阅读 2022-04-07 13:50:54
    SELECT a.managecom, ... sum(case when a.state in ('4', '5', '6', '7', '8', '9') then 1 else 0 end) recogsucc, sum(case when a.state in ('3', '12', '13') then 1 else 0 end) recogfail, .
  • sqlserver 中 case when用法

    万次阅读 2018-12-27 14:18:16
    1.case when用法 (1)简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END (2)--Case搜索函数  CASE WHEN sex = '1' THEN '男'  WHEN sex = '2' THEN '女'  ELSE '...
  • SQL语句中case when函数的用法

    千次阅读 2018-08-20 13:57:28
    前一段时间进行一段比较复杂的数据库业务查询...这一种是之前比较常用的一种方式,相当于是大部分编程语言中的switch case的用法,通过字段名,去匹配字段值,适合字段值比较固定的情况下使用,特点是比较简洁易用。 ...
  • (一)简单用法: 1.第一种写法: SELECT id,name,case when type = 1 then '通用文件' when type = 2 then '专案文件' else '未知文件' end '文件类型' FROM bas_role_info 2.第二种写法: SELECT id,name,case type ...
  • 文章目录SQL之CASE WHEN用法详解场景1:有分数score,score=60返回及格,score>=80返回优秀场景2:现老师要统计班中,有多少男同学,多少女同学,并统计男同学中有几人及格,女同学中有几人及格,要求用一个SQL输出...
  • mysql case when用法SELECTCASEWHEN`categoryid`=1THEN'参赛队员'ELSE'指导老师'ENDFROM`blog_article`WHERE1Mysql CASE WHEN 用法select sum(1) as col_0_0_, sum(case vciinfo.useable when -1 then 1 else 0 end)...
  • 问题有这么一个需求,需要根据订单的创建时间和更新时间排序,要按照最后...中数据(时间是示例,实际是datetime.datetime类型):ID订单号创建时间更新时间1a26282b273c29方案一开始的想法是根据更新时间排序,然后...
  • oracle 中 CASE WHEN 用法 同时并 GROUP BY 分组oracle 中 CASE WHEN 用法 同时并 GROUP BY 分组列表数据 查询 未处理 作废 和通过的数据业务逻辑: 想查询警报的一些信息,因为警报消息多的时候,就时间不一样,所以...
  • 本文实例讲述了php计算给定时间之前的函数用法。分享给大家供大家参考。具体如下: 这里给定一个时间,计算这个时间在多久前,比如:2天前,1年前 <?php function prettyDate($date){ $time = strtotime($date)...
  • SQL case when 用法

    千次阅读 2018-07-06 14:19:08
    SQL case when 用法主要是给变量赋值,将连续型变量离散化,主要用SQL中的CASE WHEN实例:create table table_name_new as ----将时间离散化为时间段,并创建一个新table_name_newselect * , case  when call_...
  • 【SQL学习笔记4】case when 和if的用法

    千次阅读 2020-12-25 14:52:51
    1.case用法 case 字段名 when 条件1 then 字段取值1 when 条件2 then 字段取值2 when 条件3 then 字段取值3 else 字段取值4-- 如果上述全部不满足,则执行 2.if用法 if(条件,取值1,取值2)--若条件满足,则取值...
  • mysql中case when then end的含义和用法

    千次阅读 2020-06-05 17:18:27
    主要是两种使用场景:一是类似java中的if…else;二是用于进行行转列的查询(参看以下链接场景3 的例子https://blog.csdn.net/rongtaoup/article/details/82183743)。 一般都是放在select 子句后面的,充当的是字段...
  • SQLServer case when 用法

    千次阅读 2018-03-07 11:48:44
    语法:CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression] END case 表达式(计算出一个值和后面的匹配值匹配) when '匹配值1' then '结果1' when '...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 287,878
精华内容 115,151
热门标签
关键字:

when表时间用法

友情链接: paifang.zip