我有一個SQL Server 2008數據庫和歷史記錄表,用於在主表中記錄更改。我需要報告'rate'列的當前(最新)值,以及最近一次與當前值不同的前一個值。用於比較歷史記錄表中的列中的當前值和先前值的SQL查詢
因此,鑑於這樣的:
id | rate | uninteresting | updated_on | version
-----+--------+---------------+--------------+----------
123 | 1.20 | foo | 2010-10-18 | 1500
456 | 2.10 | bar | 2010-10-12 | 2123
123 | 1.20 | baz | 2010-10-10 | 1499
123 | 1.10 | baz | 2010-10-08 | 1498
456 | 2.00 | bar | 2010-10-11 | 2122
123 | 1.00 | baz | 2010-08-01 | 1497
456 | 2.00 | quux | 2010-10-05 | 2121
456 | 1.95 | quux | 2010-09-07 | 2120
我想生產:
id | cur_rate | cur_ver | updated_on | prev_rate | prev_ver | prev_updated
-----+----------+---------+------------+-----------+----------+-------------
123 | 1.20 | 1500 | 2010-10-18 | 1.10 | 1498 | 2010-10-08
456 | 2.10 | 2123 | 2010-10-12 | 2.00 | 2122 | 2010-10-11
請注意,我想找一份率從最新的條目不同的最新條目。
我試過各種方法,但要麼得到太多的結果,要麼根本沒有。有什麼建議麼?
感謝您的快速響應,但我遇到了這個問題。除了'rn',我在'(選擇row_number()over()as ...)'中指定的所有列都得到'無效列名'。當然,我在這個例子中給出的名字並不完全匹配我的數據庫列,但是我已經替換了這些值,並且重複了幾次;我確定我有正確的表格和欄目名稱。我還重構了查詢,例如'rate(select rn = row_number()over(partition ...),id,rate,...)',同樣的問題。 – Val
這不會顯示他以前的速率**不同於當前的** **,僅僅是第二最近的速率 – JNK
+1編輯 – JNK