【DB2】判断连续时间,如果间断则新增一条记录

需求描述

image

例如:产品A01 2017-01-02到2017-01-03产品状态都是差,那么就是一条记录 但是在2017-01-04这天的状态不是差,到了5日这天又是差了 就是另外一条记录了

需求处理

DROP TABLE tb;
CREATE TABLE tb(product VARCHAR(100),dt TIMESTAMP,status VARCHAR(100));

INSERT INTO tb
SELECT 'A01','2017-1-1','优秀' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A01','2017-1-2','' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A01','2017-1-3','' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A01','2017-1-4','中等' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A01','2017-1-5','' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A01','2017-1-6','中等' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A02','2017-1-6','中等' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A02','2017-1-7','' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A03','2017-1-6','' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A03','2017-1-7','' FROM SYSIBM.DUAL
UNION ALL
SELECT 'A03','2017-1-9','' FROM SYSIBM.DUAL
-------

SELECT PRODUCT,MIN(DT) AS START_DT,MAX(DT) AS END_DATE
FROM (SELECT A.*,ROW_NUMBER() OVER(ORDER BY PRODUCT,DT) RN FROM tb A WHERE status='')
GROUP BY PRODUCT,DAYS(DT)-RN
ORDER BY PRODUCT

转载于:https://www.cnblogs.com/OliverQin/p/9047220.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值