扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
select * from cjgl_cjqxx where cjd in
创新互联公司网站建设公司,提供网站制作、成都网站建设,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
(
select cjd from
(
select cjd from cjgl_cjqxx where cbrq = to_date('2014-05-06','yyyy-mm-dd') group by cjd
union
select cjd from cjgl_cjqxx where cbrq = to_date('2014-05-07','yyyy-mm-dd') group by cjd
union
select cjd from cjgl_cjqxx where cbrq = to_date('2014-05-08','yyyy-mm-dd') group by cjd
)
group by cjd having count(cjd) = 3;
) ;
试试看。
问一下:是要找连续三天最大的,还是最大的数据是连续三天的?如果是最大的数据连续三天的
思路这样,查询所有reptype最大的那三条WORKDATE信息,并且YESTERDAYWORKINGTIME2,然后将这三条数据中max(WORKDATE)-MIN(WORKDATE)=2的reptype的数据打印出来。
需要嵌套查询。
如果是连续三天的数据中最大的那三条思路要变一下。
我的思路是用1~10
减去
除了断点以外的ID,
然后查找(断点ID-1)
那一行的记录。这个脚本具有可扩展性。当你取的是100或者其他数值也可以。我用的数据库是oracle。具体做法:
1
新建一张表B,
为了存全部的1
~10
CREATE
table
B
as
select
ID
FROM
A
where
1=2;
2
向B表中插入1~10,
C表是数据库中任意表要求至少有11行数据,为了取rownum
insert
into
B
select
rownum
from
C
where
rownum
11;
3
查找断点
select
*
from
A
where
ID
IN
(select
ID
-1
from
B
where
ID
not
in
(select
ID
from
A)
)
;
这个正则表达式还真不会写,期待高手回答。
不过如果急,可以变通下,用个存储过程实现:
创建一个临时字典表,插入筛选规则数据:‘aaa’,'bbb','ccc',,,,,'zzz'
然后通过select语句筛选出包含这些字符串的数据:
select 字段名 from 表名 a where exists(select * from 临时表 where a.字段名 like '%'+临时字段+'%')
或者这样写:
select 字段名 from 表名 where regexp_like(字段名,'(a{3}|b{3}|c{3}||d{3}|e{3}|f{3}|g{3}|h{3}|i{3}|j{3}|k{3}|l{3}|m{3}|n{3}|o{3}|p{3}|q{3}|r{3}|s{3}|t{3}|u{3}|v{3})|w{3}|x{3}|y{3}|z{3}')
创建测试表:
create table test
(name varchar2(1),
num int);
insert into test values ('A',1);
insert into test values ('A',2);
insert into test values ('A',4);
insert into test values ('B',5);
insert into test values ('B',7);
insert into test values ('B',8);
insert into test values ('C',9);
insert into test values ('C',11);
commit;
执行:
with t as
(select name,
num,
row_number() over(partition by name order by num desc) rn
from test)
select s.name, s.num
from (select t2.*
from t t1, t t2
where t1.rn = t2.rn - 1
and t1.num = t2.num + 1
and t1.rn = 1
union all
select * from t where rn = 1) s
order by name, num
结果:
你应该希望提取的字段只要含有数字就提出,剔除空和不含数字的字符串。
select * from table where regexp_substr(check,'[0-9]+') is not null
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流