SELECT文でテーブルのフィールドを定義する際、
変数を使うことは可能でしょうか?
たとえば、学校のクラス全員の5科目のテスト結果があったとします。
名前 国語 英語 数学 理科 社会
TARO 90 70 85 40 30
・
・
・
上のようなテーブルがあったとします。
ここから5科目のうちどれか一つのフィールドを引っ張りたい場合に、
SELECT文には、まず'名前' フィールドを固定で定義すのはいいとして、
5科目のフィールドを場合によって定義を変更したいときにはどのように
すれば良いでしょうか?
具体的な用途は、AccessのデータをMicrosoft query機能を用いExcel上に
表示したいと思っております。
WHERE句などで条件を絞る際は ? を使うことで変数のように扱えます。
また、変数の値はExcelの任意のセルに入力しておくことが可能です。
しかしSELECTでは ? ではうまくいかないようです。
良い解決方法がございましたら、ご教示いただけますでしょうか。
どうぞよろしくおねがいします!
http://oracle.se-free.com/dml/04_if.html
CASEやDECODEで書くと
SELECT 名前, DECODE(?,1,国語,算数) AS 国語か算数の点数 FROM テーブル名;
SELECT 名前, CASE ? WHEN 1 THEN 国語 ELSE 算数 END FROM テーブル名;
SELECT 名前, CASE WHEN ? = 1 THEN 国語 ELSE 算数 END FROM テーブル名;
なお、本題の回答として参考になっているかどうかは分かりません。
動作確認はしていません。
例えば、バインドメカニズムの?とIIF関数を使って、こんなことだったらできます。
SELECT 名前, IIf(?=1,国語,算数) AS 国語か算数の点数 FROM テーブル名;
これは、変数に当たる?が1の場合は国語の点数を表示、1以外の場合は算数の点数を表示します。
要望と違いますか??
http://vbavba.blogspot.com/2008/02/tips132-selectif-iif.html
ありがとうございます!!おかげさまで無事目的としたものを実装するできました。
DECODE,CASEどちらの方法でも、?を変数として、任意のフィールドを引っ張ることができました。
何度もご親切にご回答頂き、本当にありがとうございました!!
はてなに不慣れなもので、こういう箇所からの御礼となりすみません。