[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をかけばよいのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/27 16:28:16
  • 終了:2007/07/27 17:34:43

回答(1件)

id:y3b5 No.1

y3b5回答回数32ベストアンサー獲得回数32007/07/27 17:03:12

ポイント60pt

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

id:piro_yamagoo

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

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

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

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

そりゃできないわな。

2007/07/27 17:32:45
  • id:kn1967
    piro_yamagoo様
    自己解決されたようで何よりですが
    承認日が同じレコードが存在する可能性については考えなくても良いって事かしら?


    y3b5様
    インデントについては
    >|

    |<
    で上下を囲むことで行頭の半角スペースも生き残ります。
    こういった特殊な記法を「はてな記法」と言います。
    回答欄の右下の「?」をクリックすれば説明のページに飛びますのでご一読を。。。
  • id:y3b5
    kn1967様
    教えていただきありがとうございます。
    はてな記法の使い方を読んでみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません