[pgsql-jp: 31179] Re: 複数の入力それぞれの最新の値を求めるSQL 文

Hiroya Torii torii @ bl.mmtr.or.jp
2003年 10月 7日 (火) 12:24:36 JST


質問した鳥居です。回答ありがとうございます。



"AOKI KAZUYUKI" <aoki-kazuyuki @ nifty.com> wrote:

> SELECT * FROM test_tbl WHERE termid = X AND dt IN (SELECT max(dt) FROM
> test_tbl WHERE termid = X)
> 
> で、Xに端末IDを指定するというのはいかがでしょう?

これだと端末台数分selectかけなければならないので・・・


"gotou" <gotou @ hokkou.co.jp> wrote:

> select termid, t1.val from test_tbl as t1 inner join
>  	(select termid, max(dt)as dt from test_tbl group by termid)as t2
> 	using (termid, dt)
> group by termid;

ISHIDA Akio <iakio @ pjam.jpweb.net> wrote:

> select * from test_tbl tt1
>  where not exists
>       (select * from test_tbl tt2
>         where tt1.termid = tt2.termid
>           and tt1.dt < tt2.dt)

やはり端末番号と時間の別表を作るアプローチしかなさそうですね。
もしかしてサブクエリ無しで書けるんじゃないかと思ったのですが
難しいみたいですね。distinctとかlimitとかいろいろやってみまし
たがうまくいきませんでした・・

皆さんどうもありがとうございました。


-- 
      __________
     (_ _______()
     __||_[]_||__
    (___________()
       ||‡‡||             鳥居 大哉 (Hiroya TORII)
       ||    ||      
   ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■





pgsql-jp メーリングリストの案内