クエリの中に全ての条件を組み込むのはめんどくさいし、大変なのでモジュールを1つ作成しておいて、そのモジュールをクエリ内で実行させるのがスマートだと思います。
【モジュール】 Public Function age2point(a As Integer, b As Single) Dim point(2, 3) As Integer 'a に年齢 'b にタイム '年齢別にポイントを設定する '1 -29 point(0, 1) = 1 point(0, 2) = 2 point(0, 3) = 3 '2 30-44 point(1, 1) = 4 point(1, 2) = 5 point(1, 3) = 6 '3 45- point(2, 1) = 7 point(2, 2) = 8 point(2, 3) = 9 '年齢に応じたポイントを返す Select Case a Case Is < 29 '29歳以下の場合 Select Case b Case Is < 10 'time 10以下 age2point = point(0, 1) Case 11 To 20 'time 11~20の間 age2point = point(0, 2) Case Else 'それ以外 age2point = point(0, 3) End Select Case 30 To 44 '年齢30~44まで Select Case b Case Is < 10 age2point = point(1, 1) Case 11 To 20 age2point = point(1, 2) Case Else age2point = point(1, 3) End Select End Select End Function
上のモジュール「age2point」をクエリに組み込みます。
SELECT [テーブル1].[age], [テーブル1].[time], age2point([age],[time]) AS point FROM テーブル1;
上のSQLをクエリのデザイン画面でSQlビューに変えて貼り付ければクエリ内での記述方法が出てきます。
参考にしてみてください。
「その中でタイムに応じて点数をつけたい」というのがなにを意味しているのか良くわかりません。想像するに同じ結果でも年齢が高い人ほど点数をよくするということだろうとは思うのですが?
VBAは使いたくないということなのかも知れませんが、次のような関数をVBAを使って書くとクエリーででも使えるので便利だと思います。
Function class(age) Select Case age Case Is < 24 class = 1 Case 25 To 29 class = 2 Case 30 To 34 class = 3 Case 35 To 39 class = 4 Case 40 To 49 class = 5 Case Else class = 6 End Select End Function
この程度のプログラムなら「Select Case」だけわかれば理解できます。結果は
1=class(20)
2=class(27)
・
・
6=class(60)
のようになります。これを応用すればおたずねのことは長い式を使わなくても出来るのではないかと思います。
ありがとうございます!
ありがとうございます!