Vì bạn chỉ cần một cột từ hàng "trước", bạn có thể thử một cái gì đó như sau:
SELECT
dte,
id,
value,
(
SELECT value
FROM atable
WHERE id = t.id
AND dte < t.dte
ORDER BY dte DESC
LIMIT 1
) AS previous_value
FROM atable t
Nếu bạn cần kéo thêm các thuộc tính "trước đó", đây là một cách tiếp cận phức tạp hơn:
SELECT
t1.dte,
t1.id,
t1.value,
t2.dte,
t2.value,
…
FROM atable t1
LEFT JOIN atable t2 ON t1.id = t2.id AND t1.dte > t2.dte
LEFT JOIN atable t3 ON t1.id = t3.id AND t1.dte > t3.dte AND t3.dte > t2.dte
WHERE t3.id IS NULL
Cách tiếp cận thứ hai sử dụng phép tự nối tam giác cũng như phép nối tự phản đối với bản thân. Về cơ bản, nó có thể được dịch như thế này: