teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

2175閲覧

Accessで条件式とchoose関数を組み合わせて、数値によって異なるパターンの値を割り当てたい

tohon

総合スコア10

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/01/28 06:11

編集2020/01/28 06:14

0

0

前提・実現したいこと

Accessを使って、以下のような気象データのうち風速の値(整数)に応じて「ランク」を割り当てようとしています。
測定期間       風速m/sec 気温℃ 湿度% 日射量MJ/m2
2017/03/16 18:00  4      2 95    1.78
2017/03/16 19:00 2   1 96    0.60

ランクを割り当てるパターンは以下の通りです。
・風速が0m/秒~8m/秒の範囲であれば、風速に1を足した値をインデックスとして[1,1,2,3,4,4,5,5,6]のリストから選択されたランクに設定(風速が3m/秒であれば3+1 = 4でランク3に設定されます)
・風速が8m/秒より大きい値であればランクを9に設定

Accessでの操作としては、上記の気象データを格納したテーブル[気象データ]からクエリを作成し、
以下のようにSQLで記述しました。クエリ実行結果に元の表にある風速データと、その値をもとに割り当てられた風速ランクが並ぶことを想定しています。

クエリ実行結果イメージ
風速m/sec 風速ランク
4      4
5      4
10      9

発生している問題・エラーメッセージ

最初のパターンである「風速が0m/秒~8m/秒の範囲であれば、風速に1を足した値をインデックスとして[1,1,2,3,4,4,5,5,6]のリストから選択されたランクに設定」については以下のソースコードで実行できましたが、ここへさらに「風速が8m/秒より大きい値であればランクを9に設定」という条件を追加し、同じフィールドにランク9を表示させるにはどのようなコードを書き足せばよいかわかりませんでした。

該当のソースコード

SQL

1SELECT [気象データ].[風速m/sec], Choose([風速m/sec]+1,"1","1","2","3","4","4","5","5","6") AS 風速ランク 2FROM [気象データ] 3WHERE ((([気象データ].[風速m/sec])>=0) AND ((Choose([風速m/sec]+1,"1","1","2","3","4","4","5","5","6"))<=8)); 4

試したこと

条件分岐に関して調べて、「IIF」を用いるという方法は見つかったのですが、
choose関数と一緒に用いている事例は見つけられず、どのように組み入れるとよいのかわかりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQL

1Choose(iif([風速m/sec]>8,10, [風速m/sec]+1),"1","1","2","3","4","4","5","5","6","9") AS 風速ランク

投稿2020/01/28 06:35

編集2020/01/28 06:37
sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tohon

2020/01/28 06:43

ご回答いただき誠にありがとうございます。 記載いただいたコードを実行しましたら、想定した結果が得られました。条件式をchoose関数の中に入れる必要があったのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問