- ベストアンサー
SQL文での条件分岐
列a,b,cから構成されるテーブルAが存在します。 これをテーブルB(列d,e)に以下の流れでコピーしたいのです。 ・a列の値 → d列 にコピー ・aの値が"1"ならば、b列の値 → e列 にコピー / "1"以外は、c列の値 → e列 にコピー としたいのですが、これをSQL文だけで書けますか? ストアドを書くのであれば、どのような感じで書けばいいのでしょうか? ヒントだけでも結構ですので、分かる方はお教えいただけますか?
- ichiro29
- お礼率57% (27/47)
- その他(データベース)
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
SQLにはCASE式が使えます。 単純に書けば INSERT INTO B SELECT a d, (CASE WHEN A = '1' THEN b ELSE c END) e from A ; ORACLEであればDECODE関数で同様の処理が可能です。
その他の回答 (2)
- chie65536
- ベストアンサー率41% (2512/6032)
MSAccessであれば、 INSERT INTO テーブルB ( d, e ) SELECT a, IIf(a="1",b,c) FROM テーブルA; と書けます。 他のSQLでもSELECTステートメントにIFやCASEなどの制御文が書ける筈です。
関連するQ&A
- SQL文をご教授願います
SQL文をご教授願います。 以下のようなテーブルを仮定しています。 A B C D ---------------------- 10 100 1203 A 10 200 1204 B <--- 取得したい 11 300 1203 C 11 300 1204 D <--- 12 400 1206 D 12 500 1207 E <--- ・ ・ A列をー意にして、A列・D列のデータを取得したい 条件 Bの大きい方を取得する Bの値が同じ場合はCの大きい方を取得する。 (A列には同じデータが2以上あるとします) (C列には同じデータはありません) 欲しい結果 A D -------- 10 B 11 D 12 E
- ベストアンサー
- その他(データベース)
- SQL文で
すみません。質問させてください。 A,B,C,D,Eと5個のフィールドで構成されたテーブルtableがあるとします。 tableにはデータがすべて格納され(NULLなし)ています。 ですが、フィールドA,C,DについてA,C,Dとも同じデータが格納される ことがあります。 その重複したデータ以外を取得したいのですが (要するにフィールドA,C,Dでユニークのデータのみ取得) SQL文でどのように書けばいいかわかりません。 よろしくお願いいたします
- 締切済み
- その他(プログラミング・開発)
- 条件文を使ったグループ出力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 Server
- 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 Server
- SQL文を教えてください
A B C --------- 11 22 33 44 55 33 上記のように、同じ値を持つレコードが2件以上あるC列の値を取得するにはどのようなSQL文にすればよいでしょうか。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQLの書き方について教えてください。
SQL Server2000で下記のようなSQL文を書きたいと思っています。 テーブルAとテーブルAに無関係な2個のフィールドを 持つテーブルBがあり、テーブルAのデータをテーブルBにコピー したいと考えています。その際にテーブルBの2個のフィールドに対して 決められた値を挿入したいのですがどのように記述すればよいのか わかりません。 お分かりの方お教えいただけませんでしょうか よろしくお願いいたします。 下記の記述をしています。 INSERT INTO テーブルB ( A, B, C, D ) SELECT テーブルA.A, テーブルA.A, XXX1, XXX2 FROM reserveSETdateTRN; Cに東京 Dに品川 を入れたいと思っています
- 締切済み
- SQL Server
- 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テーブルの項目を全て出力する事は可能なのでしょうか。 宜しくお願い致します。
- ベストアンサー
- Oracle
- こんなSQL文
Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A B | C ―――――――― 2 | 10 2 | 1 1 | 10 1 | 1 1 | 11 1 | 2 1 | 1 3 | 10 2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。 B | C B | C ――――――――― ――――――――― 1 | 10 2 | 10 1 | 1 2 | 1 1 | 11 2 | 3 1 | 2 1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。
- ベストアンサー
- その他(データベース)
- sqlの条件文に関して
a b c d ------------------------ A 2 be 3 A 9 re 44 A 1 qa 43 B 5 yt 11 C 2 uu 39 C 7 oi 55 このようなテーブルでaが同じだったらbの値が一番大きなものだけを 取得したいのですが、どのようにすればよろしいでしょうか? select a, b, c, d from X . . .
- ベストアンサー
- SQL Server
- SQL文 教えて下さい。
以下のようなデータがあります。 ・列Aにはが1~300までの値が格納。 ・列BにはA~Zまでの値が格納。 列B、A~Zの値に対して、 列Aの値は列1~300の値を複数持つことができます。 列A 列B ----------- 1 A 2 A 3 A 6 A 1 B 3 B : このとき、列Aの値のうち、1~10までの値を全て持つ列Bの値を抜き出すにはどういったSQL文を記述すればよいでしょうか。 よろしくお願いします。
- ベストアンサー
- Oracle
お礼
ありがとうございました。 イメージ通りの結果が得られました。