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

Hiroya Torii torii @ bl.mmtr.or.jp
2003年 10月 8日 (水) 21:36:52 JST


こんばんは、鳥居です


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

> SELECT * FROM test_tbl WHERE id IN (
>     SELECT min(id) FROM test_tbl
>     GROUP BY termid,dt
>     ORDER BY  dt
>     LIMIT  X )
> 
> X には端末台数を入力では、いかがでしょうか?

これだとtermidごとの最新は得られませんでした・・
結果のなかに同じtermidのものが複数出てしまいました。


斎見 浩平 <saimi_at_qs @ ybb.ne.jp> wrote:

ちょっとインデントを変えさせていただきました。

> datetimeはtimestamp w/o timezoneと解釈させていただきます。
> また、話を簡単にさせてもらうために val >= 0とさせていただきます。
> 
> select termid, 
>  to_number(
>    substring(
>      max(
>        to_char(dt, 'YYYYMMDDHH24MISSUS') || to_char(val, '0000000000')
>      )
>    from 22 for 10 )
>  , '0000000000')
> as lastval
> from test_tbl
> group by termid;
> 
> ではいかがでしょう?

これはすさまじい^^; こういうのは思いつきませんでした。
|| を最初「または」と読んじゃって混乱しましたが、文字列連結
なんですね。SQLでの文字列処理はよく知らなくて・・・
ちなみにSQLの世界ではこういうのは結構普通に行われるのでしょ
うか?
ともかく、いろいろ考えていただきありがとうございます。


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





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