2012-05-07 10 views
0

に参加:検索行数は、私は以下の表を持っている

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 

私は、私は彼が複数の訪問日を持っている場合は1つのレコードのみを表示する必要があり、それぞれ「ID」のために...この2つのテーブルに参加しています。..私は

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 

たいとクエリの下に使用

私はレコードを取得mは私の問題は、条件RowNumber >=1 AND RowNumber<=3に各ID(coloumn)についてROWNUMBERとCHKを見つけることです。

+0

SQL Server 2008 –

答えて

0

これは、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) 
関連する問題