2017-09-14 108 views
1

我對Oracle SQl有疑問,我必須根據日期範圍選擇最早的記錄。我有表A與挑選最早的日期記錄

NAME.A SHOPNO YEAR.A shop key 
XX   123 2013  1 
YY   345 2013  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中不允許在列名稱中使用點。如果您將實際的列名稱更改爲通用名稱,那沒問題,但是您仍然必須遵循語法規則。那麼:「基於日期範圍**的最早記錄**」是什麼意思?什麼「日期範圍」? 「基於」這樣的範圍是什麼意思? – mathguy

+0

我對Oracle SQl有疑問,我必須根據日期範圍選擇最早的記錄。我有一張帶有NAME_A SHOPNO YEAR_A店鋪鑰匙的表A A 123 123 1 YY 345 2013 2 我有兩列的表格b。 SHOPNO NUMBER.B NAME.B INSERT_DATE_B 1 987 ZZ 2013年7月13日2 456 ZZ 2013年12月1日 我的結果輸出應爲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