電子書籍の厳選無料作品が豊富!

はじめまして。現在仕事でデータベースアプリを開発しているのですが、表題の件でちょっと頓いてしまっているので、皆様のお知恵を借りたく投稿させていただきます。

開発環境は下記で行っております。
================================================================
OS:WindowsXP Professional SP3
アプリケーション:Access ADP(Access2007 + SQLServer2008 Express)
SQLServer Management Studioを使用
================================================================

あるサービスへの申込者一覧をビューにて作成したいと思っているのですが、例を挙げると下記のようなデータ

---------元データのテーブル-------------
申込日 氏名
2010/12/01 テスト太郎
2010/12/02 テスト三郎
2010/12/05 テスト次郎
2010/12/31 テスト三郎
2011/01/04 テスト次郎
2011/01/05 テスト次郎
2011/01/10 テスト太郎
2011/02/01 テスト太郎
2011/02/11 テスト太郎
2011/03/02 テスト太郎
--------------------------------------

をビューを用いて同じ人がビューに出力されている申し込みから起算して1ヶ月の期間内にまた申し込まれたレコードは表示しないようにしたいのです。再現したいのは下記の通りです。

---------出力結果(ビュー)--------------
申込日 氏名
2010/12/01 テスト太郎
2010/12/02 テスト三郎
2010/12/05 テスト次郎
2011/01/05 テスト次郎
2011/01/10 テスト太郎
2011/02/11 テスト太郎
-------------------------------------

~~~~~~~~~~~元データをもとに解説~~~~~~~~~~~~~
2010/12/01 テスト太郎
2010/12/02 テスト三郎
2010/12/05 テスト次郎
はお三方とも最初の申し込みなのでそのままビューに出力

2010/12/31 テスト三郎
2011/01/04 テスト次郎
はビューに出力されるレコードのデータの日付からそれぞれ1ヶ月経過していないので、
ビューには出さない

2011/01/05 テスト次郎
はビューに出力される 2010/12/05 テスト次郎 の日付 2010/12/05 より起算して1ヶ月以上経過しているのでビューに出力

2011/01/10 テスト太郎
はビューに出力される 2010/12/01 テスト太郎 の日付 2010/12/01 より起算して1ヶ月以上経過しているのでビューに出力・・・(1)

2011/02/01 テスト太郎
はビューに出力される(1)の 2011/01/10 テスト太郎 の日付 2011/01/10 より起算して1ヶ月経過していないのでビューに出力しない

2011/02/11 テスト太郎
はビューに出力される(1)の 2011/01/10 テスト太郎 の日付 2011/01/10 より起算して1ヶ月以上経過しているのでビューに出力・・・(2)

2011/03/02 テスト太郎
はビューに出力される(2)の 2011/02/11 テスト太郎 の日付 2011/02/11 より起算して1ヶ月経過していないのでビューに出力しない


---------元データのテーブル-------------
(※ビューに出力は○、出力しないはX、番号は上記解説に対応)
申込日 氏名
2010/12/01 テスト太郎 ○
2010/12/02 テスト三郎 ○
2010/12/05 テスト次郎 ○
2010/12/31 テスト三郎 X
2011/01/04 テスト次郎 X
2011/01/05 テスト次郎 ○
2011/01/10 テスト太郎 ○・・・(1)
2011/02/01 テスト太郎 X
2011/02/11 テスト太郎 ○・・・(2)
2011/03/02 テスト太郎 X
--------------------------------------

※元データは申込受付テーブルなので、リアルタイムにお客様が申し込みされた日付でレコードは増えていきます
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
どのようなSQLにすればよろしいでしょうか...

A 回答 (1件)

SQLは1件のデータの情報だけで条件判定するのは簡単ですが、前後のデータの関係性から条件判定するのは非常にやっかいです。



質問のような問題は、SQLではなくVBAを使ってモジュールに記述したほうが簡単になります。

具体的なVBAの記述方法は、
[技術者向]コンピューター>プログラミング のカテゴリーで質問すれば回答が得られると思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなりましたm(__)m
ご回答ありがとうございます。
VBA案も考えていたのですが、処理が複雑になり、動作も重くなるのでは・・・と思っていて、
SQLですることを考えていました。でも実は逆でSQLではかなり厄介なんですね。
おっしゃられたとおり実際VBAでやってみたら、思ってた以上かなり簡単にできて、動作もかなり
軽くできました。
ありがとうございました。

お礼日時:2011/02/08 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!