我試圖在Oracle中編寫一個update
語句,該語句將根據時間戳從歷史記錄表中找到一個屬性。因此,例如數據的模樣:基於時間戳的歷史記錄表中的SQL更新語句
TABLE A
A_ID TIMESTAMP ATTR
---------------------------------
1 5/27/2012 10:30:00 AM ?
TABLE B
B_ID A_ID TIMESTAMP ATTR
---------------------------------------
1 1 5/26/2012 9:01:08 AM W
2 1 5/27/2012 8:38:21 AM X
3 1 5/28/2012 9:01:01 AM Y
4 1 5/29/2012 11:37:54 PM Z
下界> = B.TIMESTAMP,但我不知道怎麼寫上限爲< B.「未來TIMESTAMP」。所以,在上面的例子中,表A上的屬性應該更新爲「X」。
這似乎是一個相當常見的用例。我看過this post,但它看起來像一個令人滿意的答案從來沒有達到過,所以我想我會再次發佈。
在實際上可以開始構建查詢之前,您首先必須在句子中發出清晰的書面規則。表B中候選人記錄的定義是什麼? – Sebas
該規則是:查找表B中的記錄,其中表A的時間戳> =表B的時間戳,但是<表B的下一個時間戳,除非它是最後的時間戳和FK(A_ID)匹配。那有意義嗎? – Paul