假设下表…
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')
型
已尝试超前和滞后功能。
1条答案
按热度按时间gopyfrb31#
首先,你的样本数据似乎不正确。在您的输入中,您有类似'2017-01-14'和'2017-05- 01'的日期,在所需的输出中似乎变成了'2018-01-14'和'2018-06-05'。ID = 3的行也是如此-“2018-01-04”变为“2018-09- 04’。
根据您的输出,输入看起来更像:
字符串
有了这个,您正在谈论
previous row
,但您没有定义行如何排序。行没有唯一的ID
,所以我假设您按ID
和DateField
对它们进行排序,而输入和输出数据则不是这样。此外,也不能保证行的顺序是唯一的,因为相同的ID
可能有相同的DateField
值。另外,问问你自己,我应该按
ID
对行进行分组吗?如果我们按
ID
和DateField
对行进行排序,并查找到目前为止的最大值(似乎您不仅对前一个值感兴趣,而且还想获得前两行的最大值,然后将其用作下一行压缩的输出),您可以使用以下命令:型
x1c 0d1x的数据