我有許多行,其審計存儲在一個單獨的表中。使用一個選擇,我想獲得LatestState
,LatestDate
,PreviousState
和PreviousDate
。我真的不知道從哪裏開始爲此制定T-SQL查詢,但我猜測我需要在SELECT內部生成兩個子查詢(僞僞-code):AS-關鍵字和下一個最後一行的多列
SELECT
(SELECT [State], [Date] FROM Audits WHERE HighestID) AS ([LatestState], [LatestDate])
(SELECT [State], [Date] FROM Audits WHERE NextHighestID) AS ([PreviousState], [PreviousDate])
FROM [Data]
這可能嗎?謝謝!
編輯我使用的解決了這個連接:
SELECT ps1.Rating, ps1.DatePerformed, ps2.Rating AS PreviousRating, ps2.DatePerformed AS PreviousDate
FROM [Data]
LEFT JOIN [Audit] ps1 ON ps1.[ID] = (SELECT MAX(ID) FROM [Audit] WHERE [ProjectID] = p.[ProjectID])
LEFT JOIN [Audit] ps2 ON ps2.[ID] = (SELECT MAX(ID) FROM [Audit] WHERE [ProjectID] = p.[ProjectID] AND ID < ps1.ID)
謝謝您的意見!
這甚至不是僞代碼 - 你的'WHERE'沒有謂詞。 – Oded