mysql 最好的方式来获得最大的日期从一个单一的行

x6492ojm  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(117)

假设下表…
CREATE TABLE Dummy_Data(ID INT,TextField VARCHAR(20),DateField DATE)
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')

字符串
我想返回的数据如下与一个新的列更正日期,并应始终有最大的一个相比,前一行

(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')


已尝试超前和滞后功能。

gopyfrb3

gopyfrb31#

首先,你的样本数据似乎不正确。在您的输入中,您有类似'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


x1c 0d1x的数据

相关问题