- - PR -
登録レコードと取消レコードの間にあるレコードを除きたいのですが、取得方法についてご教示下さい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-03-10 21:06
初めまして。モリゾウと申します。
下記のような定義とレコードの状態のテーブルから、 不要なデータを除いてデータ取得を行いたいです。 【テーブル定義とレコードの状態】 PKeyは「項番」ですカッコ内はコード値名称です。 項番|顧客コード|処理区分|項目イ|項目ロ|項目ハ|削除フラグ| 01|10000|1(登録)|○○○|△△△|×××|00000| 02|10000|1(登録)|○○○|△△△|×××|00000| 03|10000|3(訂正)|○○○|△△△|×××|00000| 04|10000|9(取消)|○○○|△△△|×××|99999| 05|10000|1(登録)|○○○|△△△|×××|00000| 06|10000|3(訂正)|○○○|△△△|×××|00000| 07|10000|9(取消)|○○○|△△△|×××|00000| 08|22222|1(登録)|○○○|△△△|×××|00000| 09|22222|3(訂正)|○○○|△△△|×××|00000| 上記の状態から、顧客コード単位に 登録から取消の間に発生した全てのレコードを不要データとして除いて 取得したいのです。 しかし、取消であっても削除フラグが00000の場合は間に発生した レコードは取得対象として、 処理区分=9(取消) and 削除フラグ=99999 のレコードが存在した場合のみ、 登録から取消の間に発生したレコードを不要としたいのです。 取得後のレコードは下記の通りとなります。 項番|顧客コード|処理区分|項目イ|項目ロ|項目ハ|削除フラグ| 01|10000|1(登録)|○○○|△△△|×××|00000| 04|10000|9(取消)|○○○|△△△|×××|99999| 05|10000|1(登録)|○○○|△△△|×××|00000| 06|10000|3(訂正)|○○○|△△△|×××|00000| 07|10000|9(取消)|○○○|△△△|×××|00000| 08|22222|1(登録)|○○○|△△△|×××|00000| 09|22222|3(訂正)|○○○|△△△|×××|00000| 顧客コード=10000について、 最初の登録レコードから削除フラグ=9の取消レコードまでの 項番2,3のレコードが不要としたいです。 項番5,6,7については、取消レコードですが、削除フラグ≠9なので、 項番6は不要レコードとはなりません。 以上です。複雑でわかりづらいと思いますが、 よろしくお願いいたします。 不明な点ありましたら、ご連絡下さい。 |
|
投稿日時: 2009-03-10 22:42
DB が何なのかわかりませんが
ストアドか PL/SQL でカーソル作ってループしたら簡単ですよ。 |
|
投稿日時: 2009-03-10 22:46
TO:Kingさん
返信ありがとうございます。 >DB が何なのかわかりませんが →確かに書き漏らしてしまいました。 DBはSQLサーバー2000です。 ストアドプロシージャでカーソルを作ってはどうか? ということですね。 カーソルの利用を検討します。 アドバイスありがとうございます。 |
1