sql - 从 Start_Date 创建 End_Date 列
问题描述
我有一个带有 Start_Date 的表和一个列,重复。我可以使用什么查询来创建一个新列,该列表示开始日期之后和最接近的日期。示例输入:
开始日期 |
---|
2021-03-01 |
2021-03-01 |
2021-03-01 |
2021-08-28 |
2021-08-28 |
2021-05-13 |
示例输出:
开始日期 | 结束日期 |
---|---|
2021-03-01 | 2021-05-13 |
2021-03-01 | 2021-05-13 |
2021-03-01 | 2021-05-13 |
2021-08-28 | 无效的 |
2021-08-28 | 无效的 |
2021-05-13 | 2021-08-28 |
解决方案
更有效的方法可能是使用聚合和窗口函数:
select t.start_date, tt.end_date
from t join
(select t.start_date, lead(t.start_date) over (order by t.start_date) as end_date
from t
group by t.start_date
) tt
on tt.start_date = t.start_date;
我有点不清楚为什么你会在原始表格中有重复项。
推荐阅读
- python - 递归网页抓取分页
- awk - 如果一列与另一列匹配,则 Awk 删除行,如果另一列的最大值则保留行
- wordpress - 我正在开发一个 WordPress 主题并使用自定义字段。我面临以下问题
- eclipse - Eclipse 2021-03 - 从 Tomcat 8 更新到 Tomcat 9,现在我无法让 bat 成功运行
- pdb - Docker环境下Django项目失败时如何自动断点
- ruby-on-rails - 在 Rails 中从 S3 下载文件的动态链接
- python - 如何在 Python 中将李克特量表响应转换为数值
- r - R中的分组条形图用于数据框的矩阵
- python-3.x - 我需要将什么类型传递给表对象的 multiprocessing.Value
- c# - 如何重构此代码以搜索 BindingList 的多个属性?