|
お初にお目にかかりますm(_ _)mこちらをよく利用しているという友人から
紹介してもらい、訪問させていただきました。
早速なんですが、私は現在、実績入力のシステムを作っています
(商品の検査項目など)、検査の項目が21あって、その1つ1つにデータベースが存在
しています。つまり21個のデータベースがあります。
実績を登録するフォームと、修正するフォームがあり、それぞれデータをINSERTしたさいに、
データベースに処理区分をもうけており、それぞれ、新規登録は1、修正は2、削除は3とフラグをたてています。
ここからが自分が抱えている問題なのですが、
検査実績を帳票に表示するスプレッドを作りたいのですが,
一番最新の情報だけを表示する方法がわからないのです。
ただ、データの最新のものを、という単純なものならできるのですが、
説明がしにくいですので,仮のデータでお話しますと、
たとえば
日付2005/08/20、 通し番号 a1234、 連番001、 処理区分 1
2005/08/20、 a1234、 002、 2
2005/08/28、 a1234、 001、 3
2005/08/20、 a5678、 003、 1
2005/08/28、 a5678、 002、 2
2005/08/20、 a9999、 004、 1
というレコードがあったとします、今回の帳票は、日付を指定して、
その日に行った検査データを表示するというものにしたいのですが、
このテストデータの中には2005/8/20、2005/08/28の日付が存在しますよね?
そこで帳票には、2005/08/20の実績には
2005/08/20 a9999 004 1 のデータ、
2005/08/28の帳票には
2005/08/28 a5678 002 2 のデータが表示されるようにしたいんです。
つまり、処理区分の3のものは帳票に載せない、
前日に実績があっても、翌日にデータを修正していたら(処理区分が2があったら)
前日の実績を帳票に載せないというのがしたいんです。
クエリを4つ作って、1、日付と連番をくっつける
2、通し番号と1で作った日程連番をそれぞれ昇順と降順で並びかえる
3、通し番号をグループ化して日程連番を最大のもので集計する
4、処理区分が3のものを除く
という方法は思いついたのですが、何せよテーブルが21個もあるので、
それぞれにクエリを4つ作ったら,21×4で84個もテーブル、クエリが出来てしまうんです。
SQLでうまいこと出来ないかと思い、書いてみたのですが、
SELECT * FROM TEST WHERE (SYORI_KUBUN <> "3") ORDER BY TOSHIBANGO ASC, YYMMDD DESC, RENBAN DESC GROUP BY TOSHIBANGO HAVING Max([YYMMDD] + [RENBAN])
うまくいかず,,,
本当に困っています。どうか皆さんのお力をお借りできないでしょうか?
長文申し訳ありません。
|
|