请考虑下表
产品代码标志日期
---------------------------------------- -
A N 2015年1月10日
A N 2015年2月10日
一个Ÿ2015年4月10日
一个ÿ2015年5月10日
一个ÿ二○一五年十二月一十日
A N 13/10/2015
A N 15/10/2015
一个ÿ16/10/2015
一个ÿ16/10/2015
一个ÿ17/10/2015
B n的2015年1月12日
B n的2015年2月12日
B Y形2015年8月12日
B n的2015年8月12日
B n的2015年9月12日
可能是什么SQL查询给我低于resultL
ProductCode标志StartDate结束日期
---------------------- ---------------------------------------------
A N 2015年1月10日2015年2月10日
一个Ÿ2015年4月10日二○一五年十二月一十日
A N 13/10/2015 15/10/2015
甲ÿ16/10/2015 17/10/2015
B n的2015年1月12日2015年2月12日
B Y形2015年8月12日2015年8月12日
B n的2015年8月12日2015年9月12日
感谢。
答案 0 :(得分:4)
这里的关键是为每个产品分配连续的N和Y标志组。此后,它只是对分类群体的分组操作。
with grps as (
select t.*,
-row_number() over(partition by productcode,flag order by dt)
+ row_number() over(partition by productcode order by dt) grp
from t
)
select productcode,flag,min(dt) startdate,max(dt) enddate
from grps
group by productcode,flag,grp
order by 1,3
<强> Sample Demo
强>