Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


237 / 2272 ツリー ←次へ | 前へ→

【12448】グループ内のTop 10にするには? Sugano 13/12/12(木) 18:41 質問[未読]
【12449】Re:グループ内のTop 10にするには? かるびの 13/12/13(金) 3:30 回答[未読]

【12448】グループ内のTop 10にするには?
質問  Sugano  - 13/12/12(木) 18:41 -

引用なし
パスワード
    グループ内のTop10を抽出するには、どうすればいいでしょうか?
ご指導をお願いします。

やりたいのは、年月グループ内の金額順位をつけたいです。

例、
クエリ名称:販売管理
レイアウト:年月    品物     単価   数量   金額
      201310   abc01    100    5     500
      201310   abc02    200    2     400
      ・・・・・・
      201311   abc01    100    6     600
      201311   anc02    200    7     1400
      ・・・・・・

レイアウト:年月    品物     単価   数量   金額  順位
      201310   abc01    100    5     500   1
      201310   abc02    200    2     400   2
      ・・・・・・
      201311   anc02    200    7     1400  1
      201311   abc01    100    6     600   2
      ・・・・・・

【12449】Re:グループ内のTop 10にするには?
回答  かるびの  - 13/12/13(金) 3:30 -

引用なし
パスワード
   > グループ内のTop10を抽出するには、どうすればいいでしょうか?
 一つのクエリでやるのは無理ではないかと思います。
 いくつかのクエリを組み合わせたクエリを作ることになります。

 クエリ1
 年月が201310であるものだけを抽出して、TOP10をかける。

 クエリ2 
 年月が201311であるものだけを抽出して、TOP10をかける。

 クエリ3
 クエリ1とクエリ2のユニオンクエリを作る。

 年月が2つだけなら、上記の程度で済みますが、12か月分を集計するとなると、
クエリを13個作らなければならなくなるので、ちょっと面倒そうですね。


 DCount関数を使って、全てのレコードの年月ごとの順位を付け、
順位が10以下であるレコードを表示する
という方法も考えられますが、
きっと激遅で、使い物にはならないと思います。 


 順位付けをしたいということですが、
アクセスは、
あるレコードの値を、他のレコードの値によって決める
という作業が苦手ですので、
アクセスで順位付けをすることは、一筋縄ではいきません。

 
 私ならどうやるかですが、VBAを使って、
第1に、テーブルに順位フィールドを設け、
第2に、テーブルのデータを、年月、金額の順で並び替えたレコードセットを作り、
レコードセットをループさせて、
レコードセットの順位フィールドの値を書き替えた上で
(11位以下のレコードにも順位を付ける)、
第3に、テーブルの順位フィールドの値が10以下であるレコードを抽出するクエリを作る
という手順を踏むと思います。

237 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free