我正在努力解决这个问题.表有cycle and date列,我想再添加一列作为 end date with interval of 100 days from current date,并想显示cycle, start_date, end_date作为输出.

我试过这个

select cycle, min(start) as startt, max(start) as endd  
from cy 
group by cycle ;

然而,直到现在,运气都不好.

其MYSQL DB最新版本.

CREATE TABLE table1 (
  `cycle` INTEGER,
  `date` DATE,
);

INSERT INTO table1
  (`cycle`, `date`)
VALUES
  ('1', '15-Jan-21'),
  ('2', '01-Aug-21'),
  ('3', '08-sep-21'),
  ('4', '15-Dec-21');

Output : enter image description here

推荐答案

如果我理解正确的话,如果您的MySQL版本支持LEAD窗口函数和DATE_SUB窗口函数,那么您可能希望使用LEAD窗口函数.

SELECT *
FROM (
 SELECT *,DATE_SUB(LEAD(`date`) OVER(ORDER BY cycle), INTERVAL 1 DAY)  endDate
 FROM table1
) t1
WHERE endDate IS NOT NULL 

sqlfiddle

Mysql相关问答推荐

MySQL在使用SELECT*时不使用索引

MySQL:一个查询中的SELECT语句,用于从一个表中检索所有数据,并仅从另一个表中检索一个数据

当日期附加到MySQL后,如何按日期说明排序?

MySQL嵌套的内连接使查询变得很慢-解决方案?

Python MySQL-无法从数据库中删除行

使用字符串文字与使用日期文字时的SQL行为

为什么MySQL派生条件下推优化不起作用

Mysql 查询返回未定义的 node.js

排序子查询结果并返回每个 ID 的第一行

为什么order by子句可以利用索引?

如何将结果列中的不同值按其他列sql中的值带入单行

创建表时我的 SQL 语句有什么问题

MYSQL REGEXP_REPLACE 在数字之后

SQL 查找边界之间的值

显示值为空的所有列名

计算每个用户在第二个表中有多少条记录

避免重复进入mysql数据库的最佳方法

将 Blob 转换为字节数组的最简单方法

考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

什么是全文索引,我应该什么时候使用它?