我想創建一個查詢,它將帶來JOB_ID的最後一個狀態,這在SQL Server 2008中使用rank over分區函數很簡單,但在SQL Server 2000上,此功能不是可用。 我已經成功地通過Job_ID升序和DATETIME降序在臨時表(#JOB_HISTORY-注意pk_ID在臨時表中使用IDENTITY(int, 1,1)
生成),但這裏是我得到的部分卡住了,我不知道如何排列這張表中的記錄。在SQL Server 2000中的等級查詢
SELECT
h1.pk_ID,
h1.Job_ID,
h1.Status,
h1.DATETIME
FROM #JOB_HISTORY h1
ORDER BY h1.pk_ID ASC;
#JOB_HISTORY結果:
pk_ID, Job_ID, STATUS, DATETIME
1 1234 Succeded. 2015-03-30 12:10
2 1234 Failed. 2015-03-30 01:00
3 1234 Failed. 2015-03-28 01:00
4 5678 Failed. 2015-04-02 04:00
5 5678 Succeded. 2015-04-01 04:00
6 5678 Succeded. 2015-03-31 04:00
所需的輸出:
Job_ID STATUS DATETIME
1234 Succeded. 2015-03-30 12:10
5678 Failed. 2015-04-02 04:00
爲此,您可以用自加入,但它實在是太醜了,非常低效的(成本/時間呈指數級上升爲表變得更大)。你要用一個像2000這樣的殘缺的,不受支持的版本運行多久? – 2015-04-02 15:35:56
我們沒有升級預算。使用SQL Server的前臺程序不支持較新的SQL Server技術。 :)我試過這個查詢,但它的劑量工作,你會如何做這個選擇? '選擇h1.pk_ID,h1.Job_ID,h1.STATUS,h1.DATETIME \t FROM #job_hyst H1,#job_hyst H2 其中h2.DATETIME
2015-04-03 07:58:03