• ベストアンサー

SQL文の書き方教えてください。

Oracle9i使用しています。 列名SURYOの値が0以上なら「+」以下なら「-」と結果に表示したいのですがどうすればいいのですか? 初心者なんで知ってる関数が少ないので知りうる関数で思いついたのはこれぐらいでした… DECODE(SURYO>0,'-','+') しかしだめでした。 SQLサーバーでいうIIF関数みたいなのってないのですか? よろしくお願いします。

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

  • ベストアンサー
  • soma3
  • ベストアンサー率39% (16/41)
回答No.1

CASEを用いてみてはいかがでしょうか? CASE WHEN SURYO >= 0 THEN '+' WHEN SURYO < 0 THEN '-' END Oracleがないので確認がとれませんが、 こんな感じだったと思います。

moshamosha
質問者

お礼

すいません。 自分で試したんですが書き方間違えてたみたいでした。 soma3さんのやり方でうまくいけました。 ありがとうございました。

moshamosha
質問者

補足

CASE WHEN を使えるのはSQLサーバーじゃないでしたっけ? Oracleで使えるのでしょうか?

関連するQ&A

  • グループ化したSQL文のカウントについて

    オラクルを初めて2週間の初心者です。 tableA表からE_Codeをグループ化し、E_Codeの1の値が何個あるか、2の値が何個あるかカウントした値を求めたいのですがSQL文がわかりません。GROUP BYやCASE文などネットを見ながら試行錯誤しチャレンジしましたが、エラーとなり求めたい結果が取得できませんでした。 この場合どのようなSQL文を書いたらいいのでしょうか。 --tableA-- E_Code|K_Code 001  |   1 001  |   1 002  |   1 002  |   1 002  |   1 003  |   1 004  |   2 005  |   1 005  |   1 006  |   1 007  |   2 007  |   1 007  |   2 求めたい出力結果↓ ----------------------------- E_Code | 1の個数 | 2の個数 001  | 2    | 002  | 3    | 003  | 1    | 004  |      |1 005  | 2    | 006  | 1    | 007  | 1    |2

  • OracleとSQL ServerのSQL文上での差異について

    お世話になっております。 もしOracleやSQL Serverに関してご存知の方が いらっしゃいましたらご教授ください。 今、業務で 「Oracleに載せるシステムをSQL Serverで載せられないか?」 という話が出ており私が調査を行う事になりました。 しかし私のSQL Server経験が浅い為困っている点があります。 (以下の質問は当然ですがシステムで動く・動かない の話はヌキにしてのSQLレベルでの話です) ・Oracle特有のSQL構文をSQL Serverに見合った構文に 直すことによって(DATE→datetime/NUMBER→int等)一般的な SELECT文、INSERT、UPDATE、DELETE文はそのまま使う事が可能か? ・上の件に関する経験をお持ちの方・知識のある方にお聞きしますが 何かこの件に関する注意点などありますでしょうか? の2点になります。 どうかご存知の方がいらっしゃいましたらお願い致します。

  • AccessのクエリをSqlサーバーのクエリへ変換

    Accessで書かれたクエリをSqlサーバーのクエリに変換したいと考えているのですが そのクエリは膨大な行数ある上にIIF関数やSwitch関数がそこら中に含まれており、一つ一つ置換していられません。 もしどなたかIIF関数などのAccessのクエリをSqlサーバーのクエリへ変換してくれるソフトをご存知の方いらっしゃいましたら教えていただければ幸いです。 よろしくお願いいたします。 ◆バージョン SQL Server:SQL Server 2008 R2 ACCESS:ACCESS2000 OS:Windows7

  • 集計のSQL文について

    SQLでの集計方法について質問です。 Oracle8iを使用しています。 あるテーブルに以下のようなレコードがあります。 ID 回数 値 1   1  100 1   2  200 1   3  300 2   1  150 2   2  550 .... この登録されている値をそのIDごとに、その回数まで回数ごとにサマリーした結果を出力したいのですが どうすればよいでしょうか。 ID 回数 値 1   1  100  ・・・(100) 1   2  300  ・・・(100+200) 1   3  600  ・・・(100+200+300) 2   1  150  ・・・(150) 2   2  700  ・・・(150+550) 宜しくお願いします

  • Accessの「IIF」に相当するSQL関数(ADOでOracleに接続時)

    Access2002からADO経由でOracleに接続し、データを取得しようと 思っています。 AccessのクエリやExcel関数では、「IIF」、「IF」で条件分岐が出 来ますが、SQLでこれに相当する関数はありますか? 具体的には、   ・日付A が 2007/08/01 ~ 本日 の間なら、「手配数」フィー ルドの数字を返す   ・日付Aが それ以外の期間なら、0 を返す というような事をしたいです。 DECODE関数がIF関数と似ているように思いますが、Between~And~ や、不等号での分岐が出来ないようなので困っています。 IIFやIF のように分岐条件を自由に設定できて、入れ子も出来るよ うな関数があれば教えてください。 よろしくお願いいたします!

  • batファイルからsql文実行

    クライアントOS:WIN2000 Oracle:9i(サーバ(UNIX)上にあります) 現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。 (SQL文は単純にTBLをカウントしているだけです) ・batの中身 sqlplus %UID%/%PASS%@%SID% @test.sql > output 結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか? ・余分な情報 Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production に接続されました。

  • PL/SQLでPLS-00201のエラー

    初めて質問させていただきます。 よろしくお願いいたします。 Oracle 9i から 11g へバージョンアップしました。 9iでは動いていたPL/SQLコマンドが11gでは 以下のようなエラーが大量に発生します A_FLG Aシノニム名.列名%type ,      * 行16でエラーが発生しました ORA-00201:行16、列13: PLS-00201:識別子(シノニム名).(列名)を宣言してください。 PROCEDURE D_FLG_UPD ( a in varchar2 ) is type D_TYPE is record ( J シノニム名.列名.列名%type ,    ここでエラー   → A_FLG Aシノニム名.列名%type , B_FLG Bシノニム名.列名%type , C_FLG Cシノニム名.列名%type ); G H; begin これはどういった場合に発生するエラーなのでしょうか? またOracleのバージョンによってPL/SQLのコマンドが動かなくなったりすることは よくあることなのでしょうか? よろしくお願いいたします。

  • ACCESS2000でのCASE文

    SQL Server でいう SELECT CASE ○○ WHEN ▲▲ THEN ××, WHEN ▲▲ THEN ×× といったSQLをACCESS2000のSQLにするとき どういったSQLを使えばいいでしょうか? 調べたところ2つのパターンまでなら IIF関数で間に合うようですが、複数になったときに 困っています。 どなたか回答よろしくお願いします。

  • SQL Serverに接続できなくなった。

    はじめまして 現在スタンドアロンのノートPCにSQL Serverと OracleをインストールしたところSQL Serverに アクセスができず(クリエアナライザ使用) 以下の メッセージが表示されました。 ----------------------------------------------- サーバーに接続できません127.0.0.1 サーバーメッセージ17、レベル16、状態1 [Microsoft][ODBC SQL Server Driver] [TCP/IP Sockets]SQL Serverが存在しないか、 アクセスが拒否されました。 ----------------------------------------------- ※ Windows XP SP2 SQL Server 2000 Developer Edition Oracle 9i DataBase(9.0) 調べてみたところ以下のようなページを見つけ書いて ある内容も試してみましたが症状は変わりませんでした。 http://support.microsoft.com/default.aspx?scid=kb;ja;839269 Oracleをインストールする前は問題なく使えていたので OracleとSQL Serverがどこかのポート番号が衝突して いるのでは?と思っているのですが、それ以上の解決方法が探せない状況です。初歩的な質問かもしれませんが、皆様のお力をお借りしたいと思います。 宜しくお願いします。

  • SQL Server において

     いつも大変お世話になっています。  早速質問させていただきます。  SQL SERVER で、数値演算を行いたいのですが、 どれが演算子になっているのかがよく分かりません(- -; 「+」だと文字列演算になってしまい、ならば、数値型に変換してからやればいいのだ!!とおもい、TO_NUMBER関数を使ったところ関数とは認識されませんでした(T T)。 一体どうすればいいのでしょうか?お願いします。教えていただきたいです。 Oracleの関数が使えない場合があるので、SQL SERVER で使用できる関数が載っているサイトなどがあったら教えていただきたいです。