重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

下記図を参照願います。

1件の依頼No.にぶらさがる配送先が3か所あります。
この中で一番新しい(=若い)日付の
配送日&到着日をとりたいです。
配送日と到着日はワンセットと考えて、
新しい日付の配送日がとれたら、自動的に隣の到着日もとれるイメージです。
(例でいけば上から2つ目の配送日:20110106 到着日:20110107)
どういう風にSQL文を書いたらいいかわかりません。
どなたか教えて頂けませんか?



依頼No.  枝番     配送日  到着日

1111     1      20110107   20110108
1111     2      20110106   20110107
1111     3      20110108   20110109

A 回答 (2件)

not exists を使って



select 依頼no発送日,到着日
from table名 a
where not exists(select *
from table名 b
where a.依頼No. = b.依頼No
and a.発送日 > b.発送日);

分析関数が使えるなら

select 依頼no,発送日,到着日
from (select 依頼no,発送日,到着日,row_number() over(partition by 依頼no order by 発送日) rnum from table名)
where rnum = 1;

とかでしょうか。

この回答への補足

さっそく御回答頂きありがとうございます。
すいません、説明不足でした。
発送日,到着日はtable名 bのみにしかありませんでした・・・
not existsで書いてくださった文で、
最終行のand文だけがうまくいきません・・・すいません。

補足日時:2011/01/07 15:47
    • good
    • 0

select 発送日,到着日


from table名 a
where 発送日 = (select max(発送日)
from table名 b
where a.依頼No. = b.依頼No)

この回答への補足

さっそく御回答頂きありがとうございます。
すいません、説明不足でした。
発送日,到着日はtable名 bのみにしかありませんでした・・・

補足日時:2011/01/07 15:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す