create table tmptable(rq datetime)
go
insert tmptable values('2010.1.1')
insert tmptable values('2010.1.2')
insert tmptable values('2010.1.3')
insert tmptable values('2010.1.6')
insert tmptable values('2010.1.7')
insert tmptable values('2010.1.10')
insert tmptable values('2010.1.11')
insert tmptable values('2010.1.12')
insert tmptable values('2010.1.19')
insert tmptable values('2010.1.20')
insert tmptable values('2010.1.22')
insert tmptable values('2010.1.23')
insert tmptable values('2010.1.28')
go
---希望得到的结果
--本期起始日期 本期终止日期 持续天数 距上一期天数
--2010.1.1 2010.1.3 3 0
--2010.1.6 2010.1.7 2 3
--2010.1.10 2010.1.12 3 3
--2010.1.19 2010.1.20 2 7
--2010.1.22 2010.1.23 2 2
--2010.1.28 2010.1.28 1 5
SELECT 本期起始日期 = MIN(rq)
, 本期终止日期 = MAX(rq)
, 持续天数 = MAX(id1) - MIN(id1) + 1
, 距上一期天数 = CASE a.id1 - a.id2
WHEN -1 THEN 0
ELSE MAX(datediff(d, rq2, rq))
END
FROM (
SELECT id1 = datediff(d, '2010-01-01', rq)
, id2 = (
SELECT COUNT(1)
FROM tmptable
WHERE rq <= a.rq
), rq2 = (
SELECT MAX(rq)
FROM tmptable
WHERE rq < a.rq
)
, *
FROM tmptable a
) a
GROUP BY a.id1 - a.id2 /*
本期起始日期 本期终止日期 持续天数 距上一期天数
----------------------- ----------------------- ----------- -----------
2010-01-01 00:00:00.000 2010-01-03 00:00:00.000 3 0
2010-01-06 00:00:00.000 2010-01-07 00:00:00.000 2 3
2010-01-10 00:00:00.000 2010-01-12 00:00:00.000 3 3
2010-01-19 00:00:00.000 2010-01-20 00:00:00.000 2 7
2010-01-22 00:00:00.000 2010-01-23 00:00:00.000 2 2
2010-01-28 00:00:00.000 2010-01-28 00:00:00.000 1 5
警告: 聚合或其他 SET 操作消除了空值。 (6 行受影响)
*/

原文链接:https://www.shuzhiduo.com/A/VGzlNZ2x5b/

最新文章

  1. 不修改代码就能优化ASP.NET网站性能的一些方法
  2. 记录一次冷备恢复遇到的 ORA-00304问题
  3. 让sql语句不排序,按照in语句的顺序返回结果
  4. JavaScript显示分页按钮
  5. HW5.2
  6. linux操作Oracle导入导出dmp数据命令
  7. git全部使用步骤
  8. CSS3笔记之第三天
  9. 【css3】使用filter属性实现改变svg图标颜色
  10. Hexo NexT主题/cnblog等博客增加点击出现红心的特效
  11. dotnet core命令
  12. HTML5文件API之FileReader
  13. python自动化运维之路~DAY4
  14. Python中的字符串方法
  15. TensorFlow 实现分类操作的函数学习
  16. Python中type的用法
  17. English trip -- VC(情景课)1 D
  18. 关于java项目中的.project文件:
  19. 属性名、变量名与 内部关键字 重名 加&amp;
  20. win8.1 64位环境搭建android开发环境

热门文章

  1. 单一接口优化过程全记录(主要涉及Redis)
  2. L1-050 倒数第N个字符串 (15分)
  3. vivo 云原生容器探索和落地实践
  4. 90%的Java开发人员都会犯的5个错误
  5. [R语言] WGCNA入门教程
  6. LeetCode HOT 100:验证二叉搜索树(从左右子树获取信息进行推导)
  7. elasticsearch之单请求多查询
  8. Ansible 学习笔记 - 定位主机和组的模式
  9. 用溪流 WarKey 辅助红警开局快捷操作
  10. angular在服务中调用组件的某个方法,并传参给组件,(反向调用),变量改变后,强制更新视图