• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL 列名が無効です。)

SQL 列名が無効です。入金テーブルの通貨と額を抽出する方法

nora1962の回答

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

where句はselect句より先に評価されるためです。 SELECT 入金額 from ( SELECT CASE WHEN 入金テーブル.通貨 = 'ドル' THEN 入金テーブル.額 * 80 (為替レート1ドル80円の場合)   ELSE 入金テーブル.額 END As 入金額 FROM 入金テーブル ) WHERE 入金額 > 100000

rko910
質問者

お礼

早速のご回答、ありがとうございました。 評価の順番が上から順ではないのですね。勉強になりました。

関連するQ&A

  • SQL文がかけません

    次のようなテーブルが有ります client_code , client_name, closed_day , receipt(入金額) ,sales(今月請求額) ,collection_date入金予定月 1 , aaa  , 201804 , 10000 , 30000 , 201806 1 , aaa  , 201805 , 20000 , 40000 , 201807 1 , aaa  , 201806 , 30000 , 50000 , 201808 2 , bbb  , 201804 , 40000 , 50000 , 201805 2 , bbb  , 201805 , 50000 , 60000 , 201806 2 , bbb  , 201806 , 60000 , 70000 , 201807 3 , ccc  , 201804 , 70000 , 30000 , 201807 3 , ccc  , 201805 , 80000 , 40000 , 201808 3 , ccc  , 201806 , 90000 , 50000 , 201809 ・ ・ ・ ここから下のような表を作りたいと思っています。 6月入金管理表 会社コード , 入金予定額 , 売上月 , 実績入金額 1 , aaa , 30000  , 201804 , 30000 2 , bbb , 60000 , 201805 , 60000 3 , ・ ・ こんな感じで各月での入金予定額(aaaの場合2ヶ月前の請求額、bbbは1ヶ月前) と、実際の入金額を比較したいと思っています。 しかし、SQL文がまったくわかりません。 SELECT 文中にCASE WHENを使って頑張ってみたんですが 1 , aaa , 30000  , 201804 ,  0 1 , aaa ,  0   , 201806 , 30000 のように、2行に分かれてしまいます。 現在のSQL文は汚いですが以下の感じです。 SELECT client_code , client_name , closed_day, CASE WHEN collection_date ='2018/06' THEN sales ELSE 0 end as '入金予定額' , CASE WHEN closed_day ='2018/06' THEN receipt ELSE 0 end as '入金額' FROM Data WHERE closed_day ='2018/06' OR collection_date ='2018/06' GROUP BY client_code , client_name ,closed_day , collection_date ,sales ,receipt ORDER BY client_code どなたかお助けください

  • SQLで困っています。

    お世話になります。 SQLで困っています。 [環境] SQLServer2008 [テーブル] 売上テーブル 売上テーブルには日付、種別、金額のみ持っています。 [データ] 日付|種別|金額|残高 2014.01.01|繰越|1,000,000 2014.01.05|入金|35,980|1,035,980 2014.01.06|出金|290,000|745,980  ←最低額 2014.01.07|入金|955|746,935 2014.01.08|入金|33,020|779,955 2014.01.09|入金|34,960|814,915 2014.01.10|入金|41,960|856,875 上記データで最低額を求める簡潔なSQLを考えていますが、思いつきません。 どなたかご教授頂けたらと思います。

  • 為替相場で儲ける?

    為替相場とは2通貨間の交換比率のことですよね? 例えば1ドルが105円だったり、1ユーロが1.5ドルだったり。 そこで、たとえば仮に(現在の相場とは無関係) 1ドルが100円で、1ユーロが2ドルで、1ユーロが300円 という相場で、手元に3万円ある場合 いったんドルを買ってから(300ドル) それをユーロにかえると150ユーロになりますよね? さらにそれを円にもどせば4.5万になってしまいます。 こんなふうに為替の差?を利用すれば 誰でも金儲けが出来ちゃうと思うのですが、どうなのでしょう? こんな極端な例は起きないだろうと思いますし なんとなく自然と上のような事態が起きないようなレートに落ち着く というのは予想できます。 しかし、レートは2通貨間の売買で決まるのですから 一時的にならば上のような事態が起きてもいいはずです。 それとも為替レートはそうならないように 各通貨がリンクして動くようになっているのでしょうか?

  • GROUP BYを使って書けますでしょうか?

    以下のような為替レートのテーブル(kawase)があるとします。 ※値は適当です。   date  | cur | rate 2008-08-30 | USD | 110.36 2008-09-05 | USD | 178.34 2008-09-25 | USD | 100.45 2008-10-05 | USD | 96.54 2008-08-13 | EUR | 180.10 2008-09-08 | EUR | 200.54 2008-09-09 | EUR | 200.42 2008-10-11 | EUR | 160.31 2008-08-20 | GBP | 170.00 2008-09-10 | GBP | 181.45 2008-09-18 | GBP | 192.33 2008-09-24 | GBP | 195.02 米ドル(USD)の最新情報を取得するには、 以下のSQLでよいと思います。 SELECT * FROM kawase WHERE cur = 'USD' ORDER BY date DESC LIMIT 1; では、以下のように、全ての通貨の「最新情報」を 取得するには、どうすればよいでしょうか?   date  | cur | rate 2008-10-05 | USD | 96.54 2008-10-11 | EUR | 160.31 2008-09-24 | GBP | 195.02 GROUP BYでできますでしょうか? ※UNIONを使えばできましたが、通貨の種類が多数あるので、 SQLの行数が増えてしまいました。

    • ベストアンサー
    • MySQL
  • SQL文を教えてください

    SQL文を教えてください。 以下のテーブルがあります。 T入金 [ID] [名前] [金額] [入金日] 1, 山田, 25000, 2009/01/01 2, 佐藤, 5000, 2009/02/01 3, 山田, 30000, 2009/01/02 4, 佐藤, 45000, 2009/02/02 5, 佐藤, 10000, 2009/02/03 同じ人物で、入金額50000円に至ったときの入金日を 抽出したいと思っています。 上記データだと、 山田さんは入金日2009/01/02、 佐藤さんは入金日2009/02/02、 ということになります。 これを一つのSQL文で抽出できますでしょうか。 ご教授宜しくお願いいたします。 (Access2000のクエリで抽出しようとしていますが、Accessで無理ならSQL Server、MySQL、PostgreSQLでも可です)

  • 金融にお詳しいかた。

    金融法務の研修でこまってます。。。 (1)から(10)をお願いします・・・。 金融市場が効率的に機能していく上で重要なのが((1))である。いま、為替市場をみてみよう。1ユーロ=1.50ドルと、1ドル100円という二つの((2))から((3))が1ユーロ=1.50ドル×100円=150円と簡単に計算ができる。もしユーロ・円市場で1ユーロが100円となっていれば、円が((3))よりも((4))評価されていることになる。もし借金をして100円で1ユーロ購入し、ユーロ・ドル市場でこの1ユーロを1.5ドルに交換し、さらに1.5ドルをドル・円市場で交換するだけで150円となり、((5))円の利益があげられる。このようにユーロ・円市場では((6))が買われ、1ユーロが150円になるまで取引が続くことになる。これが((1))である。 次に為替スワップ取引に目を転じよう。為替取引には現時点での通貨の交換を行う((7))為替と、将来の時点で通貨の交換を行う((8))為替がある。 ((8))レート=((7))レート±((9)) という関係があり、((8))レートは((9))が建て値である。理論的には、((9))は二国間の((10))の差による。というのは、どちらの国で運用しても等しくなるように先物レートが調整されると考えられるからである。このように異時点間の((1))においては((10))が重要な役割を果たす。

  • このSQL文の意味を教えてください。

    SQL勉強中の者です。このSQL文の意味を教えてください。 SELECT A.* FROM table AS A, table AS B WHERE A.id *= B.id AND A.flag = 1 tableにAとBという別名をつけて、Aの全ての項目を抽出しているというところまでは分かりました。 分からないのは「WHERE A.id *= B.id」の部分です。ただの「=」なら分かりますが「*=」って何ですか? あと、AとBのテーブルが同じなのですが、同じテーブルを2つ並べている意味がよく分かりません。 よろしくお願いします。

  • SQLの更新方法について

    SQLの更新方法について 環境 OS:windows XP home sql server express2008 Microsoft SQL Server Management Studio 10.0.1600.22 現象 MS ACCESSからODBCを通してsql server express2008の中に作ったテーブル”TB01”にアクセスしていました。 あるときSQL Server Management StudioでTB01を削除しました。 ところがACCESSからODBCを通して接続すると削除したはずのテーブル”TB01”が見えていて リンクを張るとデータも出てきます、 ためしに新しくデータベースを作ってテーブルを作成してもODBCからは昔のままのテーブルしかありません。 SQL SERVERを再起動しても変わりません、どのようにすればSQLの内容を更新できるのでしょうか? どなたかお知恵を拝借願います。

  • 経済政策に関する質問

    自国が変動為替相場制を採用しているとき、為替レートが時刻通貨安(ドル高)に進むメカニズムとはどういったものでしょうか。 また、時刻が固定為替相場制を採用しているとき、為替レートが自国通貨安(ドル高)に進むのを止めるためにはどのような政策が必要だと考えられるでしょうか。 ※自国は、経常収支の赤字が続いておりドル債権の保有を減らしつつある国として考えています。

  • VBでSQL

    SQLでテーブル1に該当レコードがなければインサート あればアップデートをする処理をしたいのです IF ??? THEN UPDATE テーブル1 SET SELECT * FROM テーブル2 WHERE 条件 ELSE INSERT INTO テーブル1(SELECT * FROM テーブル2) END IF ???はプライマリキーで判定をしようと考えています こんな感じでやろうとしたところ うまくいきませんでした VB上で実行しよううとしているからなのでしょうか? ADOでSQLサーバに接続しています 条件分岐もどういう条件(VBでの書き方)がわからないです。 よろしくお願いします。