你提的问题是,是否缺少案号,就是说,分类缩写、卷宗编号都不会缺少,至需要判断某一年中的案子,是不是有缺少案号的情况。
分析
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 '时间字段')欢迎分享,转载请注明来源:内存溢出
评论列表(0条)