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

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

标识连续日期区间

参考代码

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
粉丝 5
博文 63
码字总数 33102
×
wffger
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: