SELECT dtDate, lngValue,
(SELECT TOP 1 a.dtDate
FROM tblData As a
WHERE a.dtDate < tblData.dtDate
ORDER BY a.dtDate DESC)
AS PrevDate_Top1,
(SELECT Max(a.dtDate)
FROM tblData As a
WHERE a.dtDate < tblData.dtDate
GROUP BY tblData.dtDate)
AS PrevDate_Max,
(SELECT TOP 1 a.lngValue
FROM tblData As a
WHERE a.dtDate < tblData.dtDate
ORDER BY a.dtDate DESC)
AS PrevValue_Top1
FROM tblData;