Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 在左联接中查找行号_Sql Server_Database_Sql Server 2008 - Fatal编程技术网

Sql server 在左联接中查找行号

Sql server 在左联接中查找行号,sql-server,database,sql-server-2008,Sql Server,Database,Sql Server 2008,我有以下表格: TableT1 TableT2 id name mid id visitdate 4 jack 1 4 2012/01/22 5 john 2 5 2012/01/21

我有以下表格:

   TableT1                             TableT2

id           name                 mid  id    visitdate       
4            jack                  1   4     2012/01/22          
5            john                  2   5     2012/01/21            
6            mary                  3   6     Null   
                                           4   5     2012/02/21
我已加入这两张桌子。。对于每个“id”,如果他有多个访问日期,我只能显示一条记录

使用下面的查询,我得到了我想要的记录

 select id,name 
 from TableT1 
 left join
 ( 
   SELECT  id,MAX(visitdate) AS visitdate 
   FROM TableT2 
   GROUP BY id
 )as Last_Visit on TableT1.id=Last_Visit.id 
 order by TableT1.name,Last_Visit.visitdate Desc

我的问题是在条件
rownumber>=1和rownumber中找出每个id(column)和chk的rownumber,这应该只为每个id提供最后一次访问日期,并且仅当此id有多次访问时

WITH cte AS(
    SELECT id
    , visitdate 
    , ROW_NUMBER()OVER(Partition By id Order By visitdate DESC)As VisitNum
   FROM TableT2 
)
select  TableT1.id, TableT1.name
       ,cte.visitdate , cte.VisitNum
 from TableT1 INNER JOIN cte 
    ON TableT1.id=cte.id  AND cte.VisitNum=1 
        AND EXISTS(SELECT NULL FROM cte c2 WHERE c2.id=cte.id AND c2.VisitNum>1)