治せない「クセ」を教えてください

ACCESSのデータ処理について教えて下さい。
商品番号に相当する最安と最新の価格情報を抽出するには、どの様にしたらよいのでしょう?

クエリ1:
商品番号 価格    日付
ABCDE   150   2009/03/01
ABCDE   100   2010/03/01
BCDEF   300   2009/03/01
の様に商品番号に相当する価格情報と日付の情報を参照可能。
1つの番号に複数の価格情報が登録されている事が多いです。
この価格情報の元テーブルはODBC接続された環境下にあります。(ODBCの詳細は分かりません。)

このデータを元に
商品番号を参照して、最安価格と最新価格を参照するにはどの様にしたらよいでしょう?
下記の様なデータで整理したいのです。

商品番号  最安価格  最安日    最新価格   最新日
ABCDE   100   2009/03/01   150   2010/03/01
BCDEF   300   2009/03/01   300   2010/03/01
XXXXX

クエリ1に存在しない商品番号に相当する価格情報等のフィールドは空欄
ACCESSは全くの初心者で、アドバイスいただきたく。

A 回答 (1件)

ご質問のクエリ1から続けて以下のような処理を行います。


ポイントは”集計”です。
最安値=商品番号ごとの価格の最小値
最新日=商品番号ごとの日付の最大値
であることを踏まえて読み進めてください。

1-1 最低値を求めるクエリ(クエリ1-1とします。)
 クエリ1から以下の2つのフィールドのみを選択します。 
 アクセスの集計機能をONにして以下のクエリを作ります。
  | 商品番号  | 価格
  | グループ化 | 最小値 
※上記で「商品番号ごとの最安価格」が抽出できます

1-2 上記のクエリ1-1と質問文のクエリ1をマッチング(結合)します。さらにアクセスの集計機能をONにします。
  クエリ1  クエリ1-1
  商品番号----商品番号 
   価格 ----価格の最小値
   日付
|商品番号 |価格の最小値 |日付        |
|クエリ1  |クエリ1-1   |クエリ1-1     |
|グループ化|グループ化 |最大値(又は最小値)|
※上記で「クエリ2(商品番号の最安価格)と同じ価格のときの日付」を取得できます。なおクエリ1に同じ商品番号で同じ価格のデータが2つ以上あると結果がダブるので、”集計”を利用しています

これで完成形の左半分ができるはずです
以降同様に「集計」を利用し、

2-1:商品番号をグループ化し、日付の最大を求めるクエリ作成
2-2:クエリ1と2-1のクエリで商品番号と日付を結合 商品番号、日付、価格 の3つのフィールドを選択します。
これで完成形の右半分ができるはずです

3-1:商品番号(や商品名)をグループ化したクエリAを作成します。

最後は今までの3つの表を”商品番号”で結合し、完成形にします。
  クエリ1-2  クエリ3-1  クエリ3-1
  商品番号-----商品番号----商品番号
  価格の最小   商品名    日付の最大
  最安日の・・  :      最新価格の・・

|商品番号|最安値|最安日|最新価格|最新日|
|3-1    |1-2   |1-2   |2-2    |2-2  |

以上長文ですがお試しください。


    
  

この回答への補足

調べたところ、ACCESSでは順番が変わることがやむをえないとのことが情報として掲載されていたので、IDの前に番号のフィールドを設けて、昇順に並べることでうまくいきました。ありがとうございました。

補足日時:2010/03/18 17:31
    • good
    • 0
この回答へのお礼

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

目的のデータ構成としては達成できたのですが、順番が商品番号の昇順で並べ替えられてしまいます。
順番は変更しない様にできないでしょうか?
商品番号とは別にID(番号)が存在し、このIDの順番を変更すると構成がおかしくなってしまうのです。

”3-1:商品番号(や商品名)をグループ化したクエリA”
の段階で並べ替えられてしまいます。

P.S
ちなみに下記の一番右のクエリ3-1はクエリ2-2でしたね。

クエリ1-2  クエリ3-1       クエリ3-1(クエリ2-2)
  商品番号-----商品番号----商品番号
  価格の最小   商品名    日付の最大
  最安日の・・  :      最新価格の・・

お礼日時:2010/03/18 16:30

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


おすすめ情報