• ベストアンサー

ACCESSで近似値を求める方法を教えてください。

ACCESS初心者レベルの者ですが、クエリなどについて 教えていただけますでしょうか。 給与計算や社会保険の手続きの仕事をしており、 ACCESS2000で社会保険の随時改定対象者の抽出を 行いたいと思って、テーブルには (1)毎月給与の各項目(毎月インポート予定)と、 (2)保険料一覧のテーブルを作りました。 また、クエリで改定対象者各人の (1)3ヶ月平均報酬 をAvg関数で各人の報酬を算出することはできました。 次にこの(1)で算出した3ヶ月平均報酬が (2)保険料一覧[テーブル]フィールドのどの範囲に該当するかという クエリを組みたいのですが、どのようなものが考えられるか 教えてください。 例えば、(1)で一番上の215,230円だったら該当するのは (2)では210,000以上229,999以下の範囲となり、220,000を 抽出してくる。 というものです。 (1)3ヶ月の平均報酬[クエリ] 215,230 234,500 255,000 280,000 (2)保険料一覧[テーブル] --------------------------------------------------- 報酬月額以上 報酬月額以下 標準報酬等級 標準報酬月額 210,000          229,999     18    220,000 230,000          249,999     19    240,000 250,000          269,999     20    260,000 270,000          289,999     21    280,000 290,000          309,999     22    300,000 310,000          329,999     23    320,000 330,000          349,999     24    340,000 --------------------------------------------------- EXCELでやるとすれば、 Vlookup(3ヶ月の平均報酬A2、保険料一覧A2:G4、4、true) と検索の型をtrueにして近似値を抽出するのと同じ事をACCESSで 行ないたいということです。 なお当方、恥ずかしながら不勉強の為、VBAやSQL文の書き方や さらにODBCの設定の仕方などもまだ解からないレベルです。 何卒、ご教授の程、宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

別回答で、関数を使わないクエリ。 レコード数が多い場合は、関数を使うと重くなりますので、 その場合は、こちらの方法を試してみてください。 3ヶ月の平均報酬[クエリ]のフィールド名を「平均報酬」と仮定します。 SELECT [3ヶ月の平均報酬].*, 保険料一覧.* FROM [3ヶ月の平均報酬] , 保険料一覧 WHERE 保険料一覧.報酬月額以上 <= [3ヶ月の平均報酬].平均報酬 AND [3ヶ月の平均報酬].平均報酬 <= 保険料一覧.報酬月額以下; ----------------------------------------------------------- 基本的にはNo1の回答や、上記のような感じで良いと思いますが、 細かい所で不明な点があります。 ・保険料一覧の範囲外のレコードの扱いに関して ・平均報酬の小数点以下の扱いに関して この仕様によっては、もう少し調整を行う必要があると思います。 ----------------------------------------------------------- 例:平均報酬 200,000 ←該当なし 範囲外のレコードをどう扱うのか? ・レコードその物を選択しないのか? ・空欄を表示するのか? ・その他 ----------------------------------------------------------- 例:平均報酬 229,999.33333 ←該当なし  等級18にも、19にも該当しません。 切捨てか、四捨五入などのルールがあるのでは? ----------------------------------------------------------- 補足:SQL文からクエリを作る方法 クエリの新規作成、デザインビュー。 テーブルは追加しない。 「表示」→「SQLビュー」。 SQL文をコピー&ペースト。 適当な名前で保存。

lexotan578
質問者

お礼

とても丁寧なご回答ありがとうございました。 ご指摘の ・保険料一覧の範囲外のレコードの扱いに関して ・平均報酬の小数点以下の扱いに関して についてですが、保険料一覧は一部を抜粋しました。 報酬月額以上&以下には 下限の0円~上限の99,999,999円までの範囲を設けております。 さすがに報酬が99,999,999円を越える事はないと思いますので(^_^;) 小数点以下はINT関数でまるめております。 3ヶ月平均報酬がマイナスになった場合まではまだ考えていないのですが・・・。 ご教授いただいたSELECT~をSQLビューにコピペしてみたところ、 (テーブル名、フィールド名は修正してます。) 以上、以下それぞれでパラメータを要求されてしまいました。 当方の質問の段階で明記しなかった不備があったのですが この作成しようとしているクエリを開くと、すでに 3ヶ月平均報酬を参照して各報酬月額の範囲から標準報酬月額が 抽出されているものをイメージしておりました。 ですので、もう少し調べてみたいと思います。

その他の回答 (3)

  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

>以上、以下それぞれでパラメータを要求されてしまいました。 恐らくフィールド名に間違いがあります。 認識できないフィールド名は、パラメータと解釈され、 データの入力を要求されます。 テーブル名、フィールド名をもう一度確認して下さい。 正しければ、イメージ通りの結果になるはずです。 解決できない場合は、クエリの内容(SQL文)や、 テーブル構造など、もう少し詳しく補足して下さい。

lexotan578
質問者

お礼

ご指導まことにありがとうございます。 初めは貴殿が明記して下さったSQL文をコピペし テーブル名、フィールド名を当方のものへと 修正して実行したところ、 クエリ式に演算子がありませんとのエラーが出ておりました。 そして<=[3ヶ月の平均報酬].平均報酬の部分をペーストして きたのでこの箇所が間違っている事がわかりましたが、 苦し紛れに、フィールド名に[]をつけたところ成功し、 改めてSQLビューを確認したところ、以下のように記述されておりました。 SELECT [3ヶ月の平均報酬].*, 保険料一覧.標準報酬月額, 保険料一覧.標準報酬等級 FROM 3ヶ月の平均報酬, 保険料一覧 WHERE (((保険料一覧.報酬月額以上)<=[3ヶ月の平均報酬].[平均報酬]) AND (([3ヶ月の平均報酬].平均報酬)<=[保険料一覧].[報酬月額以下])); ()については自動で作成されたものですが、この文で 思い通りの結果が得られました。 ありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>EXCELでやるとすれば、Vlookup Accessはリレーショナルデータベースですから 仕組みそのものがVlookupの親玉のようなものです 他のテーブル(クエリ)を参照するのに関数など必要ありません SQLが分からないということなのでデザインビューでできる方法で回答します >各人の報酬を算出することはできました。 このクエリと >保険料一覧[テーブル] このテーブルをクエリデザインビューに取り込みます 結合はしません 平均報酬の抽出条件欄に between 報酬月額以上 and 報酬月額以下 これで平均報酬に該当する標準報酬等級、標準報酬月額 を引っ張ってこれます

lexotan578
質問者

お礼

ご回答ありがとうございます。 >>各人の報酬を算出することはできました。 >このクエリと >>保険料一覧[テーブル] >このテーブルをクエリデザインビューに取り込みます >結合はしません >平均報酬の抽出条件欄に >between 報酬月額以上 and 報酬月額以下 行なってみたのですが、なぜか何も抽出されませんでした。 もう少しいじってみたいと思います。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

DMax("標準報酬月額","保険料一覧","報酬月額以上<=" & 3ヶ月の平均報酬) または DLookup("標準報酬月額","保険料一覧","報酬月額以上<=" & 3ヶ月の平均報酬 & "And 報酬月額以下<=" & 3ヶ月の平均報酬) になるのでは?

lexotan578
質問者

お礼

ご回答ありがとうございました。 DMax、DLookupともにビルドで行なってみたのですが、 『指定した式の構文が正しくありません。 たとえば、演算子がないのにオペランドを指定しています』 とエラーになってしまいました。

関連するQ&A

  • 健保標準報酬の定時改定について

    お世話になります。 健康保険・標準報酬額の定時改定は、毎年その年の4月から6月の給与の平均で決まる(つまり、随時改定とは異なり、それまでの月給がいくらであろうとその年の4月から6月の給与で決まる)と思っていましたら、ある文献に次のような記述がありました。 『当年の4、5、6月の3ヵ月間に受けた報酬の月平均額から算定した標準報酬月額と、前年の7月から当年の6月までの間に受けた報酬の月平均額か ら算出した標準報酬月額の間に2等級以上の差が生じた場合であって、当該差が業務の性質上例年発生することが見込まれる場合は、保険者等が算定し た額を報酬月額とする。(即ち、前年の7月から当年の6月までに受けた報酬の月平均額から算出 した報酬月額を用いて、 標準報酬月額を算定する。)』 これによると、4月から6月の給与額で求めた標準報酬月額と、それまでの1年間の給与額から求めた標準報酬月額とに2等級以上の差があった場合は、それまでの1年間の給与額から求めた標準報酬月額が採用されることになります。 このような場合とは具体的にどのような場合でしょうか? (会社で給与や社会保険の計算を担当していますが、このようなことを考慮せずやってきました。)

  • 健康保険料の算出方法について

    健康保険料の算出方法について 私は40歳のサラリーマンです。 健康保険料の算出方法でわからないことがあるので教えてください。 給与で課税対象額が37万2千円ですと標準報酬月額表から 等級26に該当するのではないのでしょうか? 健康保険料からみると等級27になっているのですが... 間違っているのでしょうか? よろしくお願いします。

  • アクセスリレーションシップについて

    こんにちは。 リレーションシップでテーブルとクエリをつないでいます。テーブルは5つあり、その中から例えば名前を入れて検索を掛けると、その5つのテーブルから該当するものを抽出したいのですが、どのようにしたらいいでしょうか?? 一応テーブルをす繋げるところまでは出来ていますので、検索して抽出をかける方法を教えて頂ければと思います。 説明が不十分かもしれませんが、ご教授願います!

  • 標準報酬月額の随時改定について

    サラリーマンの給与にかかる社会保険料の標準報酬月額の随時改定について質問です。標準報酬月額の定時改定の後、本年10月から手当の関係で、固定的賃金が下がり、1等級が低くなった場合、随時改定が出来るのでしょうか?(保険料も下がる)それとも、2等級以上開きがなければ出来ないのでしょうか?その場合、次の定時改定まで、実際の標準報酬月額等級より、多く保険料を納めなければならないのでしょうか?ご教示下さい。

  • アクセスのレポートの表示順

    アクセスで商品一覧テーブルより該当データを抽出して毎月請求書を作成していますが、表示される商品の順序はどのようにして決まるのでしょうか? テーブルの順でも基となるクエリの順でもないようなのですが、どこで制御されているのかご存じの方みえましたら教えてください。よろしくお願いします。

  • 児童手当拠出金について

    上記について質問させていただきます。 児童手当拠出金は、標準報酬月額に料率をかけて算出すると思います。 この「標準報酬月額」の取扱いが分かりません。。 定時改定又は随時改定で決められたものを指すのか、 給与支払月ごとの本俸+各手当等の合計から標準月額を出すのか・・・ (後者は、例えば残業が多かった月や、昇給があった月は変動してくると思います) 意味が分からなかったらすみません。。。 算出方法の根本が分かっていないと思いますので、詳しい方、ご教授願います。

  • 随時の標準報酬月額の有効

    お世話になります。 随時改定による標準報酬月額はいつから有効になるのですか。 例え、9月の給与支払には本俸月額の変動があって、12月最初に随時改定を行いました。随時改定による標準報酬月額は12月分の社会保険料から有効されるのですか又は1月分のからでしょうか。 12月分の社会保険料控除は1月の給与からでありますね。 よろしくお願いいたします。 日本語の学生 純

  • ACCESSのクエリで・・・

    約10万行のテーブルが4個と125個の選択クエリがあります。 各クエリに設定されている抽出条件を一覧で表示させたり 印刷する方法はありませんか?

  • ACCESSクエリの任意のレコードを抽出したい

    初心者ですのでよろしくお願いします。 ACCESS2002で現金出納帳テーブルを作成し、それから科目別のレコードを抽出する選択クエリを作成しました。 (例.交際費クエリ、贈答費クエリ、会議費クエリ等) これらのクエリではVBAで取引レコードごとに残高を算出するようにしています。 期末時点で、これらの科目別クエリの最終残高(一覧表形式の最終行にある残高)をそれぞれ抽出して、別に各科目の期末残高だけをのテーブルかクエリを作成したいのですが、いい方法はありませんでしょうか? よろしくお願いします。

  • 標準報酬月額の随時改定について

    いつもお世話になっております。 標準報酬月額の随時改定についてなのですが、 よく社会保険料を下げる方法として、 定時決定(4月、5月、6月)に合わせて、 その該当月の残業を減らして、標準報酬月額を下げる というものがあるかと思います。 もし、それで、残業を減らすのではなく、休んで(月に4日×3ヶ月(残業0時間))、休まなかった通常の等級に比べて、3等級下がって標準報酬月額を下げたとして、 それ以降の月を通常通り出勤して(残業0時間だっとして)、3等級上がった場合、 随時改定の対象となって、随時改定されてしまうのでしょうか? 残業代は非固定賃金なので、随時改定の対象外という情報はあったのですが、 このような場合は、随時改定の3条件の中の固定的賃金の変動に該当してしまうのでしょうか? それとも、該当せず、随時改定はされないのでしょうか? よろしくお願い致します。

専門家に質問してみよう