2016-09-27 11 views
0

私は必要なデータを取得するために2つのテーブルを結合しました。 1つのテーブルから最新のレコードのみを表示するのには問題があります。私がしようとしているのは、最後に更新された値を探すことです。私はmax()とrow_numを組み込もうとしましたが、何の成功もありませんでした。ここで複数のレコードの最後に更新されたレコードを表示する方法

は、私が現在持っているものです。

select distinct t1.CaId,t1.Enrolled,t1.Plan,t2.Category,t2.updateddate 
from table.one(nolock) t1 
inner join table.two(nolock) t2 on t1.CaId=t2.CaID 
where t1.coverageyear=2016 
and right(t1.Plan,2)<>left(t2.Category,2) 
order by 5 desc 
+0

テーブルに含まれる列を表示することができれば助かります。 –

+0

変更されたデータはすべてどのテーブルにありますか? – Teja

+0

スキーマ、入出力を投稿します – Teja

答えて

-1

あなたは最後に更新された値を取得しようとしている場合は、単にあなたのクエリに追加します。

order by t2.updateddate desc 

それはほとんどが表示されます現在のレコードテーブルから。

1

あなたはこのように、単に各IDの最終更新日時をつかむサブクエリをメインクエリに参加することができます。

select all_rec.CaId, all_rec.Enrolled, all_rec.[Plan], all_rec.Category, all_rec.updateddate 
from 
    (select distinct t1.CaId,t1.Enrolled,t1.[Plan],t2.Category,t2.updateddate 
    from [table.one](nolock) t1 
    inner join [table.two](nolock) t2 on t1.CaId=t2.CaID 
    where t1.coverageyear=2016 
    and right(t1.[Plan],2)<>left(t2.Category,2) 
    ) as all_rec 
inner join 
    (SELECT max(updateddate) AS LAST_DATE, CaId 
     FROM [table.two](nolock) 
     GROUP BY CaId) 
     AS GRAB_DATE 
on (all_rec.Ca_Id = GRAB_DATE.Ca_Id) 
and (all_rec.updateddate = GRAB_DATE.updateddate) 
order by 5 desc 

をものはSQL予約語であるため、私はtablePlanのあなたの用法の周りにブラケットを追加。

関連する問題