2017-09-14 20 views
1

Oracle SQlに疑問があります。日付範囲に基づいて最も早いレコードを選択する必要があります。私はテーブルAを持っています最も早い日付レコードを選択してください

NAME.A SHOPNO YEAR.A shop key 
XX   123 2013  1 
YY   345 2013  2 

私は2つの列を持つテーブルbを持っています。

SHOPNO  NUMBER.B NAME.B INSERT_DATE.B 
    1   987  ZZ  7/13/2013 
    2   456  ZZ  12/1/2013 

私の結果の出力は

NAME.A SHOPNO YEAR.A NUMBER.B NAME.B 
XX   123 2013  987  ZZ 

である必要があり、私はそれは、Oracle SQLで達成することができる方法を教えてください

+0

ご質問のデータを読みやすい形式にしてください。 – OldProgrammer

+0

NAME.Aはどういう意味ですか? Oracleでは、列名にドットを使用することはできません。実際の列名を一般的なものに変更してもOKですが、引き続き構文規則に従う必要があります。次に:「日付範囲に基づく**最も早いレコード**」とはどういう意味ですか? 「日付範囲」とは何ですか?そのような範囲に「基づいて」とはどういう意味ですか? – mathguy

+0

Oracle SQlに疑問があります。日付範囲に基づいて最も早いレコードを選択する必要があります。テーブルAにはNAME_A SHOPNO YEAR_AショップキーXX 123 2013 1 YY 345 2013 2 2つの列があります。 SHOPNO NUMBER.B NAME.B INSERT_DATE_B 1 987 ZZ 7/13/2013 2 456 ZZ 12/1/2013 結果はNAME.A SHOPNO YEAR.A NUMBER.B NAME.B XX 123 2013 987 ZZ になります。 oracle sqlでどのように達成できるのか教えてください – NEWBEE

答えて

0

は)(ランクを使用して、より効率的なソリューションのためのthis answer from a duplicate questionを参照してください。しかし、ここでは、あなたが望むことをする基本的な/簡単な方法です。

select a.name, a.shopno, a.year, b.number, b.name 
from a 
join b on a.shopno = b.shopno 
    and b.insert_date = (select min(insert_date) from b b2 
         where b2.shopno = b.shopno); 
+0

ありがとう、 – NEWBEE

関連する問題