人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLについての質問です。

SELECT文でテーブルのフィールドを定義する際、
変数を使うことは可能でしょうか?

たとえば、学校のクラス全員の5科目のテスト結果があったとします。


名前 国語 英語 数学 理科 社会
TARO 90 70 85 40 30





上のようなテーブルがあったとします。

ここから5科目のうちどれか一つのフィールドを引っ張りたい場合に、
SELECT文には、まず'名前' フィールドを固定で定義すのはいいとして、
5科目のフィールドを場合によって定義を変更したいときにはどのように
すれば良いでしょうか?

具体的な用途は、AccessのデータをMicrosoft query機能を用いExcel上に
表示したいと思っております。

WHERE句などで条件を絞る際は ? を使うことで変数のように扱えます。
また、変数の値はExcelの任意のセルに入力しておくことが可能です。
しかしSELECTでは ? ではうまくいかないようです。

良い解決方法がございましたら、ご教示いただけますでしょうか。
どうぞよろしくおねがいします!


●質問者: mithmarc
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:access Excel Microsoft SELECT SQL
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● HALSPECIAL
●50ポイント

例えば、バインドメカニズムの?とIIF関数を使って、こんなことだったらできます。

SELECT 名前, IIf(?=1,国語,算数) AS 国語か算数の点数
FROM テーブル名;

これは、変数に当たる?が1の場合は国語の点数を表示、1以外の場合は算数の点数を表示します。

要望と違いますか??

http://vbavba.blogspot.com/2008/02/tips132-selectif-iif.html

◎質問者からの返答

ご回答いただきありがとうございます!

教えていただいたサンプルコードをもとに、早速試してみたのですが、

下記のような文言が表示されうまくいきませんでした・・。

"[Oracle][ODBC][Ora]ORA-00907: 右カッコがありません。"

SQL文自体に問題はなくても、Excelからでは機能が制限されると

いったこもあるのでしょうか。

カッコの位置や全角半角等は確認したのですが、入力ミスはないかと思います。

もしエラーの内容がご理解頂けるのであれば、再度ご教示をお願いできますでしょうか。

お手数をおかけいたしますが、何とぞよろしくお願いいたします。


2 ● HALSPECIAL
●50ポイント

コメント欄を開けてもらえれば、コメントしますが。


さて、上手く行かないとのことですが、

質問は、Microsoft Access とか Excel と思うのですが、

"[Oracle][ODBC][Ora]ORA-00907: 右カッコがありません。"

というエラーメッセージですか?

DBはオラクル?アクセス?

ちなみにオラクルには、IIF関数はありません。

代わりにCASE文がありますので、そちらで代替してください。

◎質問者からの返答

DBを改めて確認したところ、AccessではなくOracleでした。

大変失礼しました・・。

ちなみに"[Oracle][ODBC][Ora]ORA-00907: 右カッコがありません。"

という文言は、ExcelのMicrosoft query機能にて接続コマンドを入力し、

Oracleへの接続を試みた際にポップアップ形式で表示されたエラーメッセージとなります。

CASE文を代用すれば可能というとこですが、SELECT句のなかにCASEを用いる際、

今回の場合、具体的にはどのようなSQLを書けばいいのか今一度お教え頂くことは可能でしょうか?

再三の質問で大変申し訳ございませんが、ご教示頂ければ幸いです。

何とぞよろしくお願い申し上げます。


3 ● HALSPECIAL
●500ポイント ベストアンサー

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 テーブル名;

なお、本題の回答として参考になっているかどうかは分かりません。

動作確認はしていません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ