MySQL从只有开始日期的两个连续行中派生结束日期
我有一张如下表: 我试过这个,但不起作用:MySQL从只有开始日期的两个连续行中派生结束日期,mysql,date,row,Mysql,Date,Row,我有一张如下表: 我试过这个,但不起作用: SELECT A.id, cast(A.startdate as date) as from_date, cast(B.startdate as date) AS enddate FROM three A INNER JOIN three B ON B.id = (A.id) ORDER BY A.id,cast(A.startdate as date) ASC 我期望的结果应该是: 我想这就是你想要的: SELECT t.Id,
SELECT A.id, cast(A.startdate as date) as from_date, cast(B.startdate as date)
AS enddate
FROM three A INNER JOIN three B ON B.id = (A.id)
ORDER BY A.id,cast(A.startdate as date) ASC
我期望的结果应该是:
我想这就是你想要的:
SELECT
t.Id,
t.old_value,
t.new_value,
t.StartDate,
-- if it's the latest entry of distinct old_value new_value pairs
IF(t1.Id IS NULL, t2.StartDate - INTERVAL 1 DAY, t.StartDate) AS EndDate
FROM three t
LEFT JOIN three t1 ON t.old_value = t1.old_value AND t.new_value = t1.new_value
AND t.StartDate > t1.StartDate
LEFT JOIN three t2 ON t.new_value = t2.old_value
;
如果没有show,很难说会创建可用的示例数据。请将代码和数据作为文本而不是图像发布。如果示例数据可用,则更容易制定解决方案。您使用的是什么版本的MySQL?为什么将日期强制转换为日期?您的示例数据和期望的结果是“损坏的”。我还建议包含一个自动增量列,因为日期(甚至DATETIME或TIMESTAMP)可以有重复项。