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)