sql查询连续数据,剔除周日放假的影响


test(init_date[日期],account[账号],check[校验值]) 表,需求: 查出连续2天check为true的数据,按照account[账号]来,即每个account[账号]连续的数据,周五跟周一算连续的,遇到放假则放假前后的也算连续的记录
数据大概是这样的:
1,日期是int型(20131205),账号是char数组类型,check是boolean 类型; 2,周六、周日该表无数据,这时,某个account的check为true,也算是连续的; 3.放假前后,某个account的check为true,也算是连续的; 4.周六、周日、节假日,test表无记录,即init_date[日期]为节假日时,test没有这个记录; 5.数据库是Oacle数据库。

存储过程 oracle

鬼魅魍魉S 11 years, 2 months ago

加一个辅助表 WORKINGDAY(day[日期]), 记录所有的的工作日.

sql:

   
  select A.account account, A.init_date date1, B.init_date date2
  
from test A, test B, WORKINGDAY WA, WORKINGDAY WB
where A.account = B.account
and A.check = 'Y'
and B.check = 'Y'
and A.init_date = WA.day
and B.init_date = WB.day
and to_date(A.init_date, 'yyyyMMdd') + 1 = to_date(B.init_date, 'yyyyMMdd');

手头没有Oracle环境, 上面的sql没有测试; Oracle表结构里没有boolean类型

Demon.X answered 11 years, 2 months ago

Your Answer