あっと、できないのか!? ORA-01799: 列は副問合せに対して外部結合されません。
select member.* from MEMBER member left outer join MEMBER_LOGIN memberLogin on member.MEMBER_ID = memberLogin.MEMBER_ID and memberLogin.LOGIN_DATETIME = ( select max(MEMBER_LOGIN.LOGIN_DATETIME) from MEMBER_LOGIN where MEMBER_LOGIN.MEMBER_ID = member.MEMBER_ID )
inner joinにすればできるが、 それだとログインしたことの無い会員がHITしません。 (通常、入会時に自動ログインするだろうが 今着目したいのはそういうことではない...) H2は上記SQLは通るが、結果がinner joinと 同じものになってしまう(BUG!?)。 MySQLは、完全に期待通りの結果が取得される。 うむむ...業務的に多いんだけどなぁ、こういうQuery。 やはり、インラインビューでGroupByするべきなのでしょうか... 【追記: 2013/03/22】 無理矢理ですが、こうすればできました。
... left outer join ( select * from member_login dfinlineloc where dfinlineloc.LOGIN_DATETIME = ( select max(login.LOGIN_DATETIME) from MEMBER_LOGIN login where login.MEMBER_ID = dfinlineloc.MEMBER_ID )) dfrel_2 on dfloc.member_id = dfrel_2.member_id