Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何比较一个表中的两行_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何比较一个表中的两行

Sql server 2008 如何比较一个表中的两行,sql-server-2008,Sql Server 2008,我有一个staging table,其中有employee列,如firstname、middlename、lastname、department、effectivedate、canceldate和processdate 我必须将每一行与其他行进行比较,以查找重复的行,如果两行匹配,我必须选择一行的处理日期大于 我使用带有densite\u rank函数的CTE查找重复项,但我不知道如何比较同一个表中的行 提前感谢。这将找到处理日期更大的重复记录 select s1.* from staging

我有一个staging table,其中有employee列,如
firstname、middlename、lastname、department、effectivedate、canceldate
processdate

我必须将每一行与其他行进行比较,以查找重复的行,如果两行匹配,我必须选择一行的处理日期大于

我使用带有
densite\u rank
函数的CTE查找重复项,但我不知道如何比较同一个表中的行


提前感谢。

这将找到处理日期更大的重复记录

select s1.*
from staging s1
join staging s2
    on s1.firstname = s2.firstname
    and s1.middlename = s2.middlename
    and s1.lastname = s2.lastname
    and s1.department = s2.department
    -- compare other columns that make records "duplicates" as appropriate
    and s1.processdate > s2.processdate; -- this makes the s1 record the latest

很抱歉,暂存表也有其他列,但我需要上面的列用最大进程日期填充特定表,并将其他记录标记为错误。