2016-09-06 9 views
0

2つのテーブルがあります。表aおよびb。 Aには、msisdn、firstname、secondname、lastname、regdate(登録データ)が含まれています。表bにも同じフィールドがあります。 msisdn XはテーブルAにあり、テーブルBには2つの異なるregdateがあります。私は両方のテーブルを照会し、最近のregdateを持つ結果を得る必要があります。SQLは2つのテーブルを比較し、最新の日付を持つレコードを取得します

msisdn X regdateは01/APR/2016であり、テーブルBのX regdateは01/AUG/2016です。これは、最新のregdateを持つため、私はBからXの結果を取得する必要があります。

おかげ

+0

を、私はあなたが "結果" は何を意味するのか、より具体的であるべきだと思います。あなたは最大のregdateを持つテーブルから行全体をしたいですか? –

+0

ええ、最新のregdateを持つテーブルの行全体。 –

答えて

0

試してみてください。

SELECT msisdn, max(regdate) 
FROM (SELECT msisdn, regdate 
FROM tablea 
UNION 
SELECT msisdn, regdate 
FROM tableb) 
group by msisdn; 
0

あなたが完全に記録したい場合:

select ab.* 
from (select ab.*, 
      row_number() over (partition by msisdn order by regdate desc) as seqnum 
     from ((select a.* 
      from tablea a 
      ) union all 
      (select b.* 
      from tableb b 
      ) 
      ) ab 
    ) ab 
where seqnum = 1; 
関連する問題