oracle sql 日期 case when where

Oracle CASE WHEN 表达式 7 种实战用法:从 SELECT 到 ORDER BY 与 GROUP BY 本文深入解析Oracle CASE WHEN表达式的7种高级应用场景,涵盖SELECT动态列转换、WHERE条件过滤、ORDER BY智能排序、GROUP BY动态分组等实战用法。通过具体SQL示例展示如何实现条件统计、数据清洗与转换,并分享性能优化技巧,帮助开发者高效处理复杂业务逻辑。 阅读详情
public String getMarkets(CrmTransBean crmTransBean) throws AppException{
StringBuilder sb = new StringBuilder();
sb.append("SELECT CA.ID,                                                        ");
sb.append("  CA.NAME,                                                      ");
sb.append("       TO_CHAR( CA.START_C,'yyyy-MM') MONDATE,                       ");
sb.append("       CC.NAME CREATENAME,                                           ");
//活动开始时间转换
sb.append("       CASE                                                                ");
sb.append("        WHEN 1=1                                                           ");
sb.append("         THEN REPLACE(TO_CHAR( CA.START_C,'mm-dd pmhh24:mi:ss'),'am','上午') ");
sb.append("        WHEN 1=1                                                           ");
sb.append("         THEN REPLACE(TO_CHAR( CA.START_C,'mm-dd pmhh24:mi:ss'),'pm','下午') ");
sb.append("        ELSE '未填写'                                                         ");
sb.append("       END STARTTIME,                                                       ");
//活动结束时间转换
sb.append("       CASE                                                               ");
sb.append("        WHEN 1=1                                                          ");
sb.append("         THEN REPLACE(TO_CHAR( CA.END_C,'mm-dd pmhh24:mi:ss'),'am','上午')  ");
sb.append("        WHEN 1=1                                                           ");
sb.append("         THEN REPLACE(TO_CHAR( CA.END_C,'mm-dd pmhh24:mi:ss'),'pm','下午')  ");
sb.append("        ELSE '未填写'                                                        ");
sb.append("       END ENDTIME,                                                        ");
//预约开始时间转换
sb.append("       CASE                                                                 ");
sb.append("        WHEN 1=1                                                            ");
sb.append("         THEN REPLACE(TO_CHAR( CA.OPENDATE,'mm-dd pmhh24:mi:ss'),'am','上午') ");
sb.append("        WHEN 1=1                                                             ");
sb.append("         THEN REPLACE(TO_CHAR( CA.OPENDATE,'mm-dd pmhh24:mi:ss'),'pm','下午') ");
sb.append("        ELSE '未填写'                                                          ");
sb.append("       END OPENTIME,                                                         ");
//预约结束时间转换
sb.append("       CASE                                                                   ");
sb.append("        WHEN 1=1                                                              ");
sb.append("         THEN REPLACE(TO_CHAR( CA.CLOSEDDATE,'mm-dd pmhh24:mi:ss'),'am','上午') ");
sb.append("        WHEN 1=1                                                               ");
sb.append("         THEN REPLACE(TO_CHAR( CA.CLOSEDDATE,'mm-dd pmhh24:mi:ss'),'pm','下午') ");
sb.append("        ELSE '未填写'                                                            ");
sb.append("       END CLOSETIME,                                                          ");

sb.append("       CASE                                                          ");
sb.append("          WHEN CA.SORT_C = '年度钻石年会' OR CA.SORT_C = 'PE类合伙人年会'    ");
sb.append("           THEN 'Y' ELSE 'N'                                         ");
sb.append("             END FC_CANBOOK,                                         ");
sb.append("       CASE                                                          ");
sb.append("          WHEN CA.END_C < SYSDATE                                    ");
sb.append("           THEN '已结束' ELSE '未结束'                                   ");
sb.append("             END STATE,                                              ");
sb.append("       CASE                                                          ");
sb.append("          WHEN CA.CREATEDATE > SYSDATE-7                             ");
sb.append("           THEN 'Y' ELSE 'N'                                         ");
sb.append("             END ISNEW,                                              ");
sb.append("       CASE                                                          ");
sb.append("          WHEN CA.END_C > SYSDATE AND CA.CLOSEDDATE > SYSDATE        ");
sb.append("           THEN 'Y' ELSE 'N'                                         ");
sb.append("             END ISFIRST                                             ");
sb.append(" FROM CAMPAIGN  CA                                        ");
sb.append(" JOIN CCUSER  CC                                    ");
sb.append(" ON CA.CREATEBYID = CC.ID                                        ");
sb.append(" WHERE 1=1                                                       ");
sb.append("     AND ((                                                          "); 
sb.append("          CC.NAME != '数据交互用户' AND CA.ZHUANGTAI IN('已完成','总部市场部批准','客服项目经理批准','活动结果已通过审核','活动已提交,但审核未通过','未开始','进行中','开放预约','结束预约')  ");
sb.append("     AND CA.START_C IS NOT NULL AND CA.END_C IS NOT NULL AND CA.PITCH_AREA IS NOT NULL                                                            ");
sb.append("          AND (CA.RANGE_NEW LIKE '%"+crmTransBean.getBranchname()+"%' OR CA.RANGE_NEW LIKE '%全国%')                                                    ");
sb.append("         )                                                                                                               ");
sb.append(" OR (                                                                                                                ");
sb.append("          CC.NAME = '数据交互用户' AND CA.PUBLISH_STATUS = '已发布' AND CA.ZHUANGTAI != '活动无效'                                ");
sb.append("          AND ( CA.BRANCH LIKE '%"+crmTransBean.getBranchname()+"%' OR CA.BRANCH LIKE '%全国%') ");
sb.append("        ))                                                                                                                ");
if(!"".equals(crmTransBean.getSearch()) && null != crmTransBean.getSearch()){
sb.append(" AND CA.NAME LIKE '%"+crmTransBean.getSearch()+"%'                                                                    ");
}
if(null != crmTransBean.getIsfirst() && crmTransBean.getIsfirst().equals("Y")){
sb.append(" AND (CASE                                                                                                             ");
sb.append("          WHEN CA.END_C > SYSDATE AND CA.CLOSEDDATE > SYSDATE                                                          ");
sb.append("           THEN 'Y' ELSE 'N'                                                                                           ");
sb.append("             END )='Y'                                                                                                 ");
}
if(null != crmTransBean.getIsfirst() && crmTransBean.getIsfirst().equals("N")){
sb.append(" AND (CASE                                                                                                             ");
sb.append("          WHEN CA.END_C > SYSDATE AND CA.CLOSEDDATE > SYSDATE                                                          ");
sb.append("           THEN 'Y' ELSE 'N'                                                                                           ");
sb.append("             END )='N'                                                                                                 ");
}
if(null != crmTransBean.getMondate1() && !"".equals(crmTransBean.getMondate1()) && !"".equals(crmTransBean.getMondate2()) && null != crmTransBean.getMondate2()){
sb.append(" AND TO_CHAR(CA.START_C, 'yyyy-MM') IN ('"+crmTransBean.getMondate1()+"','"+crmTransBean.getMondate2()+"')             ");
}
if(null != crmTransBean.getMondate1() && !"".equals(crmTransBean.getMondate1()) && ("".equals(crmTransBean.getMondate2()) || null == crmTransBean.getMondate2())){
sb.append(" AND TO_CHAR(CA.START_C, 'yyyy-MM') IN ('"+crmTransBean.getMondate1()+"')             ");
}
sb.append("ORDER BY START_C DESC");
return sb.toString();
}
PostgreSQL CASE WHEN语句详解与应用实践 SQL条件表达式是数据库查询中的核心功能,允许根据不同的数据状态执行分支逻辑处理。PostgreSQL的CASE WHEN语句作为标准SQL实现,提供了比简单WHERE子句更灵活的条件判断能力,也比多段IF语句更简洁高效。在工程实践中,这种条件表达式特别适用于数据转换、动态列生成和条件聚合等场景。通过电商订单状态映射、物流运费计算等实际案例可以看出,合理使用CASE WHEN能显著减少应用层代码复杂度。在性能方面需要注意条件顺序优化和类型处理,同时PostgreSQL特有的FILTER子句和COALESCE 阅读详情

相关推荐

Oracle DECODE函数:高性能值映射与CASE WHEN替代实践

DECODE函数是Oracle数据库中专为等值映射设计的原生条件表达式,其核心原理是单次字段取值+顺序哈希匹配,区别于CASE WHEN的逐条布尔求值机制。这种轻量级参数化结构带来显著技术价值:在千万级订单表的字段编码转换、状态归类、分桶统计等场景下,可降低CPU时间10%~15%、减少逻辑读数千次/秒。它适用于Oracle生态内对性能敏感的ETL清洗、实时报表和老系统维护,尤其擅长单字段=常量的静态映射任务。本文深入解析DECODE函数、Oracle条件表达式在真实生产环境中的性能边界、隐式类型陷阱与NU

weixin_33841503的博客 360

Oracle CASE WHEN 用法介绍

转自http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE...

brittany2009的博客 2011

SQL CASE WHEN实战指南:解决多条件分组、动态打标与漏斗统计

CASE WHEN是SQL中实现条件逻辑的核心语法,本质是在查询执行阶段对每行数据进行实时判断与标记,突破WHERE单条件过滤和GROUP BY固定字段分组的限制。其原理基于向量化计算,在一次数据扫描中完成多路分流,显著优于子查询或临时表的嵌套循环开销。技术价值体现在动态口径聚合、用户分层打标、异常值清洗及条件化JOIN等关键场景,广泛应用于电商漏斗分析、SaaS用户运营、游戏流失预警等工程实践。本文聚焦真实业务问题,解析如何用CASE WHEN替代低效写法,规避NULL陷阱、顺序错位与兼容性雷区。

weixin_34228387的博客 314

js中时间格式与时间戳的相互转换

一、时间转时间戳 1、当前时间转换(毫秒) new Date().getTime() 2、指定时间转换(毫秒) let timeDate = "2019-11-11 16:26:24"; new Date(timeDate).getTime() 二、时间戳转化为日期 //将时间戳转换成日期格式yyyy-mm-dd hh:mm:ss timestampToTime(timestamp)...

烟雨任平生╰的博客 433

【数据库】银行/信贷业务测试工作中涉及的数据库表格

银行/信贷业务测试工作中涉及的数据库表格,金融信贷测试人必看!

孤之鹜的博客 1169

AI时代敏捷开发新范式——意图驱动开发IDD

具体的功能代码、单元测试、集成测试用例,以及最终可运行的、支持PlantUML的Markdown转Word工具新版本。:业务方(如技术文档团队)反馈,现有的Markdown转Word工具在处理包含PlantUML代码块的文档时,无法正确生成图表,导致技术方案、架构图等关键信息丢失,严重影响了文档交付质量和团队效率。这不仅带来了交付周期显著缩短、资源效能倍增的可观收益,更深远的意义在于,它描绘了未来软件工业化、智能化的新图景:一个由精准意图驱动、AI自主执行、人类智慧引领的敏捷、高效、高质的新世界。

LiuJunjiang的专栏 549

oracle中case 我很,oracle中case when的用法總結(case when like功能)

最近大量用到了oracle的sql語句中的case when,閑下來就整理一下。1.根據類別統計假設現在有一組數據如下 其中,0表示單選題,1表示多選題,現在分別要統計單選題跟多選題的數目,就可以這么做啦select sum(case t.type when 0 then 1 else 0 end), sum(case t.type when 1 then 1 else 0 end) from Q...

weixin_33737167的博客 945

【计算机科学导论实验】加法图灵机模拟 题解

本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。

Chavapa's blog 2576

oracle比较当前日期的时分秒

SELECT CASE WHEN sysdate >= to_date(to_char(sysdate,'yyyy-mm-dd') || ' 00:30:00','yyyy-mm-dd hh24:mi:ss') AND sysdate < to_date(to_char(sysdate,'yyyy-mm-dd') || ' 07:30:00','yyyy-mm-dd hh24:mi:ss') THEN '晚班' WHEN sysdate >= to_date(to_char(sysda

qq_28644241的博客 1894

Silvaco TCAD | 从PIN到APD:高性能光电探测器的仿真设计与优化

本文详细介绍了使用Silvaco TCAD进行光电探测器仿真设计与优化的全过程,从基础的PIN结构到高性能APD的实现。通过实战案例和代码示例,展示了如何优化器件参数、实现雪崩效应以及进行高级仿真分析,帮助工程师提升光电探测器的量子效率和响应速度。

weixin_29218509的博客 426

PTGui使用教程

PTGui使用教程为啥使用ptgui开始使用ptgui 为啥使用ptgui ptgui是一个全景拼接软件,在海思hi3559上做视频拼接的时候,需要拼接参数,这是就需要使用到ptgui,这里可以在该网站下下载ptgui:下载地址 开始使用ptgui 第一步,加载图片,我这里添加了三幅图 然后添加控制点(可以先多对准几次图像,这样会自动生成一些控制点,但是不保证准确),建议控制点不要太密集 点开镜头设置,勾选以下几个选项以及配置好镜头类型,如下图 点开优化器,在高级界面中配置如下参数,最后点

what_wrong的博客 1万+

Oracle中Case When的用法

一、Case的两种表达式 1.1、简单的case表达式 SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 END FROM table1; 1.2、检索的cse表达式 SELECT CASE WHEN 条件1 THEN 条件1的結果 WHEN 条件2 THEN 条件2的結果 ELSE 条件1,2以外的结果 END FROM table1; 二、Case的不同用法 2.1、作为求个

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 4万+

centos8 安装新版bind9源码

bind一直在更新,使用了比较多的新架构 本文记录新版本的bind怎么安装,以及其依赖库的安装 1. 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.17.9.tar.xz为例。将软件传到/root目录下。 也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 2. 安装基本的依赖库,像gcc、amake等 3. 需要安装libuv库,但直接用yum时可能安装不全 建议使用源码安装,需要安..

linggang_123的博客 2538

oracle多重判断语句,Oracle 判断语句

首先是decode函数。decode的用法是DECODE(control_value,value1,result1[,value2,result2…][,default_result]);参数说明:control _value试图处理的数值。可以是数据库中表的某一列,DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。value1是一组成序偶的数值。如果输入数值与之匹配成功,则相应的...

weixin_36149538的博客 1199

RT-DETR改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点

本文记录的是利用模块优化的目标检测网络模型。的目的是在不出现过参数化的情况下有效地增加卷积的感受野,从而解决了在感受野扩展中的参数膨胀问题。本文将其加入到深度可分离卷积中,有效降低模型参数量和计算量,并二次创新,使模块更好地捕捉低频特征,增强网络性能。Wavelet Convolutions for Large Receptive Fields小波卷积及其改进的实现代码如下: 四、创新模块 4.1 改进点1⭐ 模块改进方法:加入(第五节讲解添加步骤)。添加后如下:模块改进方法:基于的(第五节讲解添加步骤)

Limiiiing的博客 1503

Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行单板压降仿真分析操作指导

如果需要单独对某个via设置参数,右侧选择Setup by padstack,下方下拉选择某个via,单独设置参数即可。举例:板厚1.6mm,内层1OZ(1.2mil,即0.03mm),铜皮宽度1mm,20度温升,允许通流I为2.5A。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。电流密度计算公式:J=I/A(J为电流密度,I为电流,A为横截面积)

weixin_54787054的博客 695

数据库 面试宝典

数据库 一、where与having WHERE用于行过滤。 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。 二、字符串与日期,数字之间相互转化 到字符串:to_char();到日期:to_date();到数字:To_number(cha...

OpenSource_的博客 251

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Oracle 学习笔记(二)基本查询操作

文章目录 1.别名2.去重distinct3.where条件过滤4.between..and/not between..and5.in(参数列表)/not in(参数列表)6.模糊查询7.处理字符函数:8、is null/is not null9.数字函数10.日期函数11....

芒果冰沙的博客 363

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据库 - SQL基础操作

本文介绍了常用数据库数据类型及基础SQL操作。数据类型涵盖字符串、数值、日期时间、二进制、布尔、JSON等,不同数据库支持略有差异,如Oracle专用的VARCHAR2、NVARCHAR2、BLOB等。基础命令包括INSERT、DELETE、UPDATE、SELECT等数据操作,以及DISTINCT、ORDER BY、GROUP BY、HAVING、JOIN等查询控制语句。同时简要说明了DDL中建表语法,强调字段类型选择与数据库兼容性的重要性。

Hvitur的博客 1390

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

case when 取别名的问题

select case when ceil((To_date(main.sheetCompleteLimit, ‘yyyy-mm-dd hh24-mi-ss’) - To_date(sysdate, ‘yyyy-mm-dd hh24:mi:ss’)) * 24 * 60 * 60 * 1000) >= ceil(((To_date(main.sheetCom

晴丶空 7404

Oracle sql where后面的多条件case when判断执行

sql code: select * from table_name t where (case when t.table_column='条件' then t.table_column when t.table_column='条件' then t.table_column end)='条件' my sql code: -- 测试sql SELECT *FROM PROJ...

Gordon5134的博客 8641

Oracle CASE WHEN 实战:从基础语法到高级查询优化

本文深入解析Oracle CASE WHEN表达式的基础语法和高级应用,涵盖动态分组统计、条件排序技巧及性能优化实践。通过实战案例展示其在学生成绩分析、电商促销和人力资源报表中的强大功能,帮助开发者高效处理复杂SQL查询和业务逻辑。

cixu3288的博客 441

oracle和mysql的区别常用的sql语句

当然可以!

夕阳之歌的博客 1849

Oracle中的Case When 用法

一,CASE WHEN 的表达方式有两种 [code="java"] --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ...

直挂云帆济沧海,乘风破浪会有时 169

Oracle 中 start with 递归查询、case when 条件表达式、rowid 伪列去重、level 级次、synonym 同义词、dblink 跨库操作、快速批量生成百万测试数据

目录 需求分析 准备测试表与测试数据 Oracle 中 start with...connect by prior 语句实现递归查询 需求分析 1、开发中经常会有这种需求实现: 2、通常前端显示需要的数据格式如下: var zNodes =[ { id:1, pId:0, name:"湖南省", open:true}, { id:11, pId:1, name:......

蚩尤后裔-汪茂雄 5743
上一篇: oracle 中处理 时间 显示为 年 月 日 下午/上午 时 分 秒
下一篇: svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
Y_JY
博客等级 码龄15年 7粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值