人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[postgresql]
申請番号,承認番号,承認日のカラムのある申請テーブルがあります。
実データは
1,000001-2007,2007-01-01
2,000002-2007,2007-01-10
3,000002-2007,2007-01-15
4,000002-2007,2007-01-13
5,000003-2007,2007-01-15

とします。
このとき承認番号から年度をけしたもの(substr(承認番号,0,6))
で承認日がもっとも新しいもののみを残したリストを作成したい。
例だと申請番号1,3,5のみ抽出したい。
のですがどのようなSQLをかけばよいのでしょうか?


●質問者: piro_yamagoo
●カテゴリ:ウェブ制作
✍キーワード:2007-01-01 2007-01-10 2007-01-13 2007-01-15 postgreSQL
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● y3b5
●60ポイント

postgresqlが手元にないので、MySQLで試しましたが、承認番号ごとの承認日の最大値をサブクエリーで絞ってそれを条件にしてはどうでしょう?

もっといい方法があるかもしれませんが・・

(例)

申請テーブル →AAAテーブル

申請番号 →NO

承認番号 →SYO

承認日 →DT

とした場合、

SELECT

A.*

FROM

AAA A,

(

SELECT

SUBSTR(SYO,1,6) SYO,

MAX(DT) DT

FROM

AAA

GROUP BY

SUBSTR(SYO,1,6)

) SUB

WHERE

SUBSTR(A.SYO,1,6) = SUB.SYO

AND A.DT = SUB.DT;

(インデントがうまくつけられません。見づらいと思いますがすみません)

http://q.hatena.ne.jp/1185521294

◎質問者からの返答

ご回答ありがとうございます。

SUBSTR(A.SYO,1,6) = SUB.SYOをみて

自己結合で自己解決しました。

a.substr(syo,1,6)ってやってましたw

そりゃできないわな。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ