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

成績表などをアクセスで作って管理していますが、順位をつけたいときはどうしたらいいのでしょうか?
RANK関数みたいなものがあればいいのですが・・・。エクセルで別にランクをつけたものをインポートしなおとだめなんでしょうか?

A 回答 (1件)

ちょっと、SQLの知識が必要ですが・・・


 次の例は、ACEESS2000で実験しています。もしかすると、古いaceessではできないかもしれません。

 たとえば、得点というテーブルが次の構造であるとします。
name 文字列
ten 数値

 これをtenが大きい順に順位を付けるものとしましょう。

 選択クエリーを作成します。
 元テーブルは、得点です。
 nameとtenのフィールドは、そのままクエリーの結果に表示するように、素直に設定しておきます。
 3つめのフィールドが問題です。
 これは、順位のフィールドになりますが、ここのフィールド欄には、次のように入力します。(フィールド欄で、CTRL+F2を押して、式ビルダを立ち上げておくと入力しやすいです。)

(select count(*)+1 from 得点 tbl2 where 得点.ten < tbl2.ten)

 外側の「()」(半角です。)を含めてすべて入力してください。

 これで、このクエリーの結果を表示すると、式1というフィールドに順位が表示されているはずです。
 ただ、残念なことに、このフィールドには、「並べ替え」を設定することができません。
 順位で並べ替えるのであれば、このクエリーをたとえば、「順位」という名前で保存して、新しいクエリーを作り、順位のすべてのレコードを、「式1」でソートするようにします。

 さて、先ほど、フィールド欄に直接入力した式をSQL文といいます。
 実は、aceessのヘルプには、この文の使い方はほとんど掲載されていません。
 単純に説明しておくと、同じ得点テーブルをもう一つ開いてtbl2という名前にしたとき「FROM 得点 tbl2」、元の得点テーブルの点数より大きいもの「WHERE 得点.ten < tbl2.ten」が、いくつあるかを表示する「SELECT COUNT(*)」と書いてあります。
 自分より得点が高い人の数に+1すれば、自分の順位となりますよね?

 ちょっと難しいですが、自分の表の構造にあわせて、テーブル名と、フィールド名を書き換えてみて実験してみてください。
    • good
    • 0
この回答へのお礼

丁寧に教えていただいてありがとうございます。
さっそくやってみたら、できました。あとは応用的にどう使いこなせるかですね。
本当にありがとうございました。

お礼日時:2004/06/07 12:14

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