SQL 结果集标识
博客专区 > wffger 的博客 > 博客详情
SQL 结果集标识
wffger 发表于4个月前
SQL 结果集标识
  • 发表于 4个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

标识连续日期区间

参考代码

with tt as(
select 10004 aac001,'小明'aac003,'200801'  aae002,  88 aic011,      date'2008-01-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200802'  aae002,  88 aic011,      date'2008-02-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200803'  aae002,  88 aic011,      date'2008-03-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200804'  aae002,  88 aic011,      date'2008-04-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200807'  aae002,  88 aic011,      date'2008-07-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200808'  aae002,  88 aic011,      date'2008-08-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200904'  aae002,  88 aic011,      date'2008-04-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200905'  aae002,  88 aic011,      date'2008-05-01'aae036 from dual union all 
select 10004 aac001,'小明'aac003,'200910'  aae002,  88 aic011,      date'2008-10-01'aae036 from dual )
 
select aac001,aac003,min(aae002)||'--'||max(aae002),count(1)
from(
  select tt.*,add_months(to_date(AAE002,'YYYYMM'),
    -1*row_number()over(partition by aac001,aac003 order by aae002))flag
  from tt)
group by aac001,aac003,flag
order by 1,2,3

思路:

按日期排序后标识行数,然后对日期和行数进行减法,连续的日期得到的值相同。

标签: SQL Oracle
共有 人打赏支持
wffger
粉丝 6
博文 58
码字总数 32763
×
wffger
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: