sql - 如何创建每 2 行的范围
问题描述
我有下表:
+------------+
| date |
+------------+
| 2018-07-01 |
| 2018-09-01 |
| 2018-08-01 |
+------------+
如何以这种方式查询以获得以下结果?
+------------+------------+
| min_date | max_date |
+------------+------------+
| 2001-01-01 | 2018-07-01 |
| 2018-07-01 | 2018-08-01 |
| 2018-08-01 | 2018-09-01 |
+------------+------------+
解决方案
lag()
接受三个参数,第三个参数是默认值,所以你可以这样写:
select lag(date, 1, '2001-01-01' as date) over (order by date) as min_date,
date as max_date
from t;
推荐阅读
- react-snap - react-snap,静态页面加载后重新渲染的困惑?
- javascript - 如何修复 React Native 中的合并项中的“java.lang.String 类型的值 a 无法转换为 JSONObject”错误
- macos - docker:无效的引用格式:存储库名称必须为小写
- arrays - 红宝石数组分开“重复”
- ios - 在 Swift 中将整数映射到字符串
- artifactory - 立即从 Artifactory Remote Respository 开始下载
- reactjs - React:部署到 IIS 后刷新页面时找不到页面
- django - 使用模板标签获取模板中的错误数
- ruby-on-rails - 为什么这个使用 will_paginate 的无限滚动不起作用?
- laravel - Laravel 数据透视表生成不起作用(返回一般错误:1005 无法创建表)