Sql server 2012 RNO';当在(分区)上使用行号()时,在运行外部查询时,分配的完全不同

Sql server 2012 RNO';当在(分区)上使用行号()时,在运行外部查询时,分配的完全不同,sql-server-2012,Sql Server 2012,我正在对FNAME、LNAME、DOB进行分区,我需要获取每个人的最近一年记录,因此我正在按“年”列进行排序,当我只运行内部查询时,会为每个记录正确分配RNO,但当我运行外部查询时,如果您可以看到外部选择,并且我保留了一个条件,其中RNO=1,那么我将获得差异不同的记录。 问题是当我运行外部查询时,外部查询的RNO完全改变了,我还尝试将内部查询保留在临时表中,然后考虑过滤显示不同RNO的RNO。 我还尝试过使用CTE,在我运行外部查询时,该CTE也显示RNO存在问题。请告诉我是否有其他选择是否可

我正在对FNAME、LNAME、DOB进行分区,我需要获取每个人的最近一年记录,因此我正在按“年”列进行排序,当我只运行内部查询时,会为每个记录正确分配RNO,但当我运行外部查询时,如果您可以看到外部选择,并且我保留了一个条件,其中RNO=1,那么我将获得差异不同的记录。 问题是当我运行外部查询时,外部查询的RNO完全改变了,我还尝试将内部查询保留在临时表中,然后考虑过滤显示不同RNO的RNO。
我还尝试过使用CTE,在我运行外部查询时,该CTE也显示RNO存在问题。请告诉我是否有其他选择

是否可以通过唯一ID(如SSN)或其他ID(可能是SID)更好地识别一个人?不是FNAME+LNAME+DOB的组合来唯一识别此人?您能给我们一些示例数据来显示生成的行号吗?请在共享之前对数据进行非个性化处理!(很抱歉大声喊叫,但考虑到一些数据中有SSN信息,这是有保证的!)
SELECT  KID,SSN,SID,YEAR,FNAME,LNAME,DOB, GENDER, RACE 
    FROM 
    ( SELECT  KID,SSN, SID,YEAR,FNAME,LNAME,DOB, GENDER, RACE,ROW_NUMBER()  OVER(PARTITION BY FNAME,LNAME,DOB
            ORDER BY year DESC ) RNO    
            from #t17
        )A
            WHERE RNO=1