在SQL数据库中如何查询某一年份类型所有案号中缺失的案号?

在SQL数据库中如何查询某一年份类型所有案号中缺失的案号?,第1张

首先要知道你的案号生成规则,比如按照你提供的案号,2015-XSI-0003-101,看这个案号,大概推测生成规则是

年-分类缩写-卷宗编号-案件流水号

你提的问题是,是否缺少案号,就是说,分类缩写、卷宗编号都不会缺少,至需要判断某一年中的案子,是不是有缺少案号的情况。

分析

1、按照 年-分类缩写-卷宗编号对案件进行分组计算count,然后取 年-分类缩写-卷宗编号下的最大案号,用count值与最大案号进行比对,count值一定是小于等于最大案号的,如果等于,则表示这个 年-分类缩写-卷宗编号下没有缺失的案子,如果小于,则表示有缺失的案子,

创建临时表1,存储 年-分类缩写-卷宗编号,最大编号的号码这两个字段,准备下一步处理。

2、创建临时表2,两个字段,第一个是 年-分类缩写-卷宗编号,第二个是案号,写一个mysql函数,或者用java代码写一个循环,从1开始到临时表1中保存的最大案号,将记录插入到临时表2中,意思就是说,临时表2中应该保存所有正确的案号,然后用主业务表跟临时表2关联,临时表2中字段为null的就是缺失的编号了。

查询字段为空的数据。如下三条语句查询的结果各不相同。

select count(0) from tps_uw_detail where trim(coreContNo)=''###1736

select count(0) from  tps_uw_detail where coreContNo is null###735

select count(0) from  tps_uw_detail where (coreContNo is null or trim(coreContNo)='')##2471

=''就是存的空字符串;is null 就是默认的。

由于是后来新加的字段,默认为null,所以历史数据都为null。表中加上这个字段后,再落库的数据就是空字符串了。

根据自己的需求选用脚本,第三个是适合我的。

select distinst select left(DATE_FORMAT('时间字段','%H:%i:%s'),2) ,count('state=1'),count('state=2'),count('state=3') from table where 日期 = EXTRACT(YEAR_MONTH_DAY FROM '时间字段')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8629058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存