我有这个SQL语句,但它只有在我所有日期都是顺序时才有效。我的数据不包括工作日,假日或停电日,所以可能会有7天的差距,所以我需要一个更好的方法来引用前一天的行。
update fdd1
set fdd1.Prior_Open = fdd2.Day_Open,
fdd1.Prior_Close = fdd2.Day_Close
from full_daily_data fdd1
inner join full_daily_data fdd2
on fdd2.Trade_Date = DATE_SUB(fdd1.Trade_Date, INTERVAL 1 DAY)
有什么建议吗?
答案 0 :(得分:0)
这应该计算fdd1.Trade_Date
之前的最近日期,而不考虑差距;您查询的唯一更改是在最后(on fdd2.Trade_Date =
之后):
update fdd1
set fdd1.Prior_Open = fdd2.Day_Open,
fdd1.Prior_Close = fdd2.Day_Close
from full_daily_data fdd1
inner join full_daily_data fdd2
on fdd2.Trade_Date = (
SELECT MAX(fddsub.Trade_Date)
FROM full_daily_data fddsub
WHERE fddsub.Trade_Date < fdd1.Trade_Date)