假设下表...

创建表DUMMY_DATA ( ID整型 文本字段VARCHAR(20), 日期字段日期 )

INSERT INSERT INTO DUMMY_DATA(ID,Textfield,Datefield) 值

   (1, 'Random Text', '2018-01-04'),
   (1, 'Random Text', '2018-02-04'),
   (1, 'Random Text', '2018-05-01'),
   (2, 'Random Text', '2018-01-14'),
   (2, 'Random Text', '2018-06-05'),
   (2, 'Random Text', '2018-01-01'),
   (2, 'Random Text', '2018-02-01'),
   (3, 'Random Text', '2018-09-04')

我想返回下面的数据与一个新的列更正日期,应该总是有一个最大的与前一行相比

   (ID, TextField, DateField , Correcteddate 
   (1, 'Random Text', '2018-01-04','2018-01-04'),
   (1, 'Random Text', '2018-02-04','2018-02-04'),
   (1, 'Random Text', '2018-05-01','2018-05-01'),
   (2, 'Random Text', '2018-01-14','2018-05-01'),
   (2, 'Random Text', '2018-06-05','2018-06-05'),
   (2, 'Random Text', '2018-01-01','2018-06-05'),
   (2, 'Random Text', '2018-02-01','2018-06-05'),
   (3, 'Random Text', '2018-09-04','2018-09-04')

已try 超前和滞后功能.

推荐答案

首先,您的样本数据似乎不正确.在您的输入中,日期类似于‘2017-01-14’和‘2017-05-01’,在所需的输出中似乎变成了‘2018-01-14’和‘2018-06-05’.ID=3的行相同-‘2018-01-04’变为‘2018-09-04’.

根据您的输出,输入看起来更像是:

INSERT INTO Dummy_Data (ID, TextField, DateField) VALUES
   (1, 'Random Text', '2018-01-04'),
   (1, 'Random Text', '2018-02-04'),
   (1, 'Random Text', '2018-05-01'),
   (2, 'Random Text', '2018-01-14'),
   (2, 'Random Text', '2018-06-05'),
   (2, 'Random Text', '2018-01-01'),
   (2, 'Random Text', '2018-02-01'),
   (3, 'Random Text', '2018-09-04');

有了这些,您谈论的是previous row行,但您并没有定义行的排序方式.行没有唯一的ID,所以我认为您是按IDDateField对它们进行排序的,这与您的输入和输出数据不同.此外,不能保证以这种方式行将是唯一的顺序,因为对于相同的ID,您可能具有相同的DateField个值.

另外,问问自己,我是否应该将行按ID分组?

如果我们按IDDateField对行进行排序,并寻找到目前为止的最大值(似乎您不仅对前一个值感兴趣,而且希望获得前两行的最大值,然后将其用作下一行压缩的输出),则可以使用以下命令:

SELECT ID
      ,TextField
      ,DateField
      ,MAX(DateField) OVER (ORDER BY ID, DateField ASC) AS NextDate
FROM Dummy_Data

enter image description here

Mysql相关问答推荐

Mysql - Select 匹配某些条件的两条记录之间经过的最大天数

为什么用PyMySQL构建的json返回结果会出现重复?

如何确保 SQL 记录的列不引用它自己的主键?

java.lang.NullPointerException:无法调用com.proj.my.repository.OrderRepository.save(Object),因为this.orderRepository为空

需要按总金额检索前 3 个供应商,每个类别 - 子类别

从多到多表中 Select 数据而无需重复

Select 分组产品的数量和每个产品的最便宜的价格

包含 group_contact 的视图的问题

无法通过迁移在现有表中插入行 - Rails 6

MySQL如何通过外键ID Select 多行?

查询给出错误时的 mySQL Group_Concat 和 Case

SUBSTRING_INDEX 获取第 n 个值

SQL 中的双杠 (||) 是什么意思?

加快 MySQL 中的行计数

最好的 MySQL 性能调优工具?

如何将时刻 JS 时间插入 MySQL

MySQL ORDER BY rand(),名称为 ASC

MySQL 连接运算符

使用 mysqldriver 连接数据库时出错

SELECT INTO 和未声明的变量错误