• ベストアンサー

CASE文

SQLのCASE文での質問なのですが、 テーブルの項目「区分」に1,2,3,4,5とデータが入っていた場合で 1の場合はA 2の場合はB 1かつ2でない場合はC と返す場合はどのように記述すればよろしいのでしょうか? 環境はSQL Server2000です。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

すみません、end忘れました。 >select case >when 区分 = 1 then 'A' >when 区分 = 2 then 'B' >else 'C' >from テーブル名 select case when 区分 = 1 then 'A' when 区分 = 2 then 'B' else 'C' end from テーブル名 ですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • jurarumin
  • ベストアンサー率34% (190/544)
回答No.2

select case 区分 when '1' then 'A' when '2' then 'B' ELSE 'C' END AS '区分' from ○○テーブル 上記の記述で出力できると思いますよ

0000hiro
質問者

お礼

>1または2でない場合 すいません。確かにそうです。 了解しました。早速試してみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>1かつ2でない場合はC これ、ありえないですよね。 1でなく、かつ2でない場合か、1または2でない場合じゃないと。 なんで、 select case when 区分 = 1 then 'A' when 区分 = 2 then 'B' else 'C' from テーブル名 でいいのかな?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL文 特定のレコードを抽出したい

    以下のようなテーブルAがあったとします。 年月日,項目B ---------------------- 20080101 100 20080102 100 20080103 200 20080104 400 20080105 400 20080106 200 SQL文にて、データの抽出を行いたいのですが、 抽出したいのは、データに変更があった年月日と項目Bの値です。 年月日,項目B ---------------------- 20080101 100 20080103 200 20080104 400 20080106 200 前の年月日と比較し、項目Bに違いがあった場合のデータだけ抽出したいのですが、SQL文で行うことは可能でしょうか?? 環境は、SQL Server 2005 です。

  • SQL CASE 文について

    開発環境 SQLSERVER VB2005 SQLのCASE文についての質問ですが、DATE型のデータが有効値の場合は”スペース”それ以外の場合は格納されているDATE型を表示したいのですが、どなたかご教授お願いいたします。下記のSQLでは全ての日付が出てしまいます。 SELECT CASE 日付 WHEN '2000/01/01' THEN ' '     ELSE 日付          END AS Expr1 FROM  テーブル CASE文以外でもできますか? よろしくお願いいたします。

  • 条件文を使ったグループ出力SQL文

    SQL初心者です。な~んだこんな事くらいと言わず教えてください。 テーブルに A B C ------------ 5 a b 7 c d 4 a d 5 f b ------------ というデータがあります。 これを Bの列については、aとa以外 Cの列については、bとb以外 というようにグルーピングして、合計値を出したいと思っています。 結果として a b 5 a b以外 4 a以外 b 5 a以外 b以外 7 という形の出力イメージです。 調べてみてcase when文を使えばいいなんてことをなんとなく理解しているのですが、group byと組み合わせてどのようにSQL文を書けばいいかわかりません。 SQL Serverを使っています。ご存知の方、ご教授ください。

  • SQL文について

    Select文についての質問です。 テーブルA,B, Cがります。  Aテーブルのカラム A1,A2, A3  Bテーブルのカラム B1, B2, B3  Cテーブルのカラム C1,C2, C3 A1=B1,A2=B2の  A3,B3 と、 A1=C1でC3がNULLでないCテーブルの件数 を一度に取得したい場合、どのようなSQL文になるでしょうか。 よろしくお願いします。

  • SQL文

    SQLの初心者です。 Aテーブル(a項目,b項目,c項目)とBテーブル(a項目,d項目,e項目)のテーブルがあります。 d項目順でAテーブルの項目のみ出力するにはどうしたらいいのでしょうか。 例えば次のSQL文ではd項目順で出力されますが結合の為、AテーブルとBテーブルの全項目が出力されます。 SELECT * FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 次のSQL文のようにAテーブルの項目を選択したらAテーブルの項目のみ出力する事はわかります。 SELECT a項目,b項目,c項目 FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 今回はAテーブルの項目数が少ないのでこれでもいいのですが、項目数が多くなると大変です。 上の様に項目を選択しないでAテーブルの項目を全て出力する事は可能なのでしょうか。 宜しくお願い致します。

  • SQL文の書き方。初歩的ですみません。

    SQL文苦手で困っています。教えてください。 MSSQLserver8.0使用です。 以下のテーブル。 コードA 区分 コードB 数量 101     A    301    1 101     A    302    2 101     A    303    1 101     B    901    2 101     B    902    1 102     A    301    1 102     B    901    2 を、コードB単位に数量を集計し、区分別に左右に分け 以下のように帳票出力したいのですが。  301 A 2 |(区切り)| 901 B 4  302 A 2 |(区切り)| 902 B 1  303 A 1 group by 区分, コードBといきたいところなんですが。 使用している帳票出力ソフトの関係上、1ページ毎に出力しなければならず、 通常、A区分データが多いため、改ページのタイミングがずれます。 A区分のデータとB区分のデータをそれぞれ別に取得し(2つのSQL)、 2つの結果を交互に1行ずつよむ・・・という方法以外に、 1つのSQL文で、 1行目がA区分(301)、2行目がB区分(901)、3行目がA区分(302)・・ のように交互にデータを取得する方法ってありますか? うまく表現できなくてすみませんが、 よろしくお願いします。 

  • sql文について教えて下さい

    お世話になっております select文を教えて下さい A   B 123  0 123  0 123  1 123  1 124  0 124  1 124  2 125  0 125  1 125  1 Aの項目でグルーピングしBが0のデータが2件以上あるケースを選択したいのですが良く分かりません。 上記の場合は、A=123のケースだけを選択したいのですが どなたかご教示下さい。 A  B 123  0 123  0 という結果になるようにSQLを組み立てたいのですが よろしくお願いします。

  • SQL(SELECT文)を教えてください

    SQL Serverを勉強中です。 以下のようなテーブルに、同一の日付に複数の名称・値のセットが存在します。 Date(日付)  Name(名称) Value(値) 20130101      a      10 20130101      b      20 20130101      c      30 20130202      a      5 20130202      b      10 20130202      c      15 このデータを、SQLのSELECT文で取得し、以下のような表を作りたいと考えています。 a b c 20130101 10 20 30 20130202 5 10 15 行が日付、列が名称になっています。 このように取得できるSQL文を教えてください。よろしくお願いします。

  • SQL文にて

    調べたり聞いたりしたのですが なかなか解らなかったので、質問させてください。 AテーブルとBテーブルとがあり、Aテーブルのみにしか 存在しないデータを一発で取得することはできるのでしょうか? Aテーブルのデータ数(100件) Bテーブルのデータ数(80件) Aのキー項目とBのキー項目とは同一です。 処理をしたい事はAとBとでAにしか存在しないデータを ループせずに一回のSQLで行えたらと思っています。

  • SQL文で

    すみません。質問させてください。 A,B,C,D,Eと5個のフィールドで構成されたテーブルtableがあるとします。 tableにはデータがすべて格納され(NULLなし)ています。 ですが、フィールドA,C,DについてA,C,Dとも同じデータが格納される ことがあります。 その重複したデータ以外を取得したいのですが (要するにフィールドA,C,Dでユニークのデータのみ取得) SQL文でどのように書けばいいかわかりません。 よろしくお願いいたします