Tsql 使用SQL Server 2000的行号()和分区函数修改SQL查询

Tsql 使用SQL Server 2000的行号()和分区函数修改SQL查询,tsql,ssis,sql-server-2000,row-number,Tsql,Ssis,Sql Server 2000,Row Number,这是我当前的SQL查询: SELECT ROW_NUMBER() OVER(PARTITION BY [Machine_ID] ORDER BY Version DESC) AS ROW, MachineList.* FROM MachineList 基本上,我想得到不同的机器信息。如果多台机器具有相同的ID,则选择具有最新版本的机器 但是,SQL Server 2000不支持行编号功能。上面的SQL有其他选择吗 另外,我在网上找到的大多数解决方案都使用临时表。但我无

这是我当前的SQL查询:

SELECT 
   ROW_NUMBER() OVER(PARTITION BY [Machine_ID] ORDER BY Version DESC) AS ROW, 
   MachineList.*
FROM  
   MachineList
基本上,我想得到不同的机器信息。如果多台机器具有相同的
ID
,则选择具有最新版本的机器

但是,SQL Server 2000不支持
行编号
功能。上面的SQL有其他选择吗


另外,我在网上找到的大多数解决方案都使用临时表。但我无法使用临时表,因为此查询将在SSIS中使用

您可以使用内联临时表来计算每个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
可能重复的
 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