2012-10-16 117 views
0

這是我當前的SQL查詢:修改SQL查詢與ROW_NUMBER()和分區功能的SQL Server 2000

SELECT 
    ROW_NUMBER() OVER(PARTITION BY [Machine_ID] ORDER BY Version DESC) AS ROW, 
    MachineList.* 
FROM 
    MachineList 

基本上,我想不同的機器信息。如果幾臺機器具有相同的ID,則選擇最新版本的機器。

但是,SQL Server 2000不支持ROW_Number函數。上面的SQL有沒有其他選擇?

P.S.我在線發現的大多數解決方案都使用臨時表。但是我無法使用臨時表,因爲這個查詢將在SSIS中使用。

+0

的可能重複[SQL Server 2000上的SQL Server行\ _number()?](http://stackoverflow.com /問題/ 4081753/SQL服務器的行數上-SQL服務器2000年) – Echo

回答

0
select m.* 
from machinelist as m 
     inner join (
       select 
        t.machine_id, max(t.version) as version 
       from machinelist as t 
       group by t.machine_id 
     ) as mm on 
       mm.machine_id = m.machine_id and mm.version = m.version 
0

您可以使用內聯臨時表來計算每個machineID的最高版本。想必對臨時表的SSIS限制適用於#表,而不是內聯的臨時表

SELECT M.* 
FROM MachineList M inner join 
(select Machine_ID, max(Version) from MachineList 
group by Machine_ID) Z on M.Machine_id = Z.Machine_id 
and M.Version = Z.Version