• ベストアンサー

<SQL>別の表の要素から新しい表を作成

SQLでセレクトしたデータを新しい表として作ることは出来ると思うのですが、セレクトしたデータ(1列)をもとに3列の要素があるテーブルを作るということは可能でしょうか? 例をあげて説明すると、 ある表はX1(商品ID(主キー)、商品名、値段、・・・)からなり、そこに100件のデータがあるとする。 別の表としてX2(商品ID、在庫、発注数)があるとする。 こういう場合にX2の表を作成すると同時に、(X1の商品ID、0、0)となるデータ100件も作成したいのですが、そういう操作は可能でしょうか? 手入力でinsertをしてデータを作るとなると、データが多い時に手間がかかるし、入力ミスが起きることもあると思うので、上記を達成できる方法があったら教えてください。 結合という方法だと列が多くなってしまうので、希望に合わないかなと思います。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

Oracleでテストできる環境が手元にないため自信はありませんが以下のSQL文でいけるとおもいます。 CREATE TABLE X2 AS SELECT 商品ID AS X1の商品ID,0 AS 在庫,0 AS 発注数 FROM X1 型の指定が希望通りいかない場合はCAST関数を使ってCAST(0 AS NUMBER[n,m])という感じで0の型を指定してみてください。

k_aahen
質問者

補足

回答ありがとうございます。 テーブルを作成する時 creat table X2( "商品ID" NUMBER, "在庫" NUMBER, DEFAULT 0, "発注数" NUMBER, DEFAULT 0 ... ) と普段やっていましたが、この(の前に、AS SELECT... を入れればいいということでよろしいでしょうか? それとも、()内の記述は必要無くなるのでしょうか?

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

その他の回答 (1)

回答No.2

>別の表としてX2(商品ID、在庫、発注数)があるとする。 既存の表(X2)に対して、データを登録したいのでしょうか? 既存の表であれば、 insert into X2 select 商品ID,0,0 FROM X1; で不足する項目を定数で補いつつINSERTできます。 既存の表でなく、データの登録と併せて、新規にテーブルを 作ると言うことであれば、#1で書かれた方法で可能です。

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

関連するQ&A

  • 既存の表から新しい表を作成

    既存の表から新しい表を作成する方法について質問させて下さい。 ・作成方法  既存の表にあるカラムを2つSELECTし、合わせて新しいカラムを1つを作成する。  CREATE TABLE NEW_TABLE AS (SELECT   COLUM_ID_1,  COLUM_ID_2,   'TT' as COLUM_ID_3  FROM   OLD_TABLE  )  上記のようにすれば新しいカラムを追加する事ができるようなのですが、  新しく追加した「COLUM_ID_3」の型定義が"CHAR"となってしまいます。 これをVARCHAR2にする方法はあるのでしょうか。 どうかご教授の程お願い致します。

  • エクセルで作成した「月間売上高表」から「顧客別売上高表」を作成する方法

    「月間売上高表」のA列:顧客名、B列:代金、C列:商品名を入力しました。  この表から「顧客別 月間売上高表」を作成する方法を教えてください。

  • エクセルで関数を使い注文品別の一覧表を作るには?

    まず、元になるデータとして、縦軸1~80に発注者氏名、横軸A~Jに注文品を記した表があり、発注した個数を入力してあります。縦軸最後にはSUM関数で注文品別の合計発注数が出ています。 この表を基に、注文品別の発注者がわかる一覧表を作成したいのですが、ご教授お願いします。 VLOOKUP関数等考えてみましたが、うまくいきません。(個数を入力したセルから氏名をひっぱってくる方法が不明です)エクセル上級者の皆様、宜しくお願い致します。(アクセスがないのでエクセルでお願いします)

  • エクセルで関数を使い注文品別の一覧表を作るには?

    まず、元になるデータとして、縦軸1~80に発注者氏名、横軸A~Jに注文品を記した表があり、発注した個数を入力してあります。縦軸最後にはSUM関数で注文品別の合計発注数が出ています。 この表を基に、注文品別の発注者がわかる一覧表を作成したいのですが、ご教授お願いします。 VLOOKUP関数等考えてみましたが、うまくいきません。(個数を入力したセルから氏名をひっぱってくる方法が不明です)エクセル上級者の皆様、宜しくお願い致します。(アクセスがないのでエクセルでお願いします)

  • エクセル2010 表の作成について

    エクセル初心者です。 作成したい表の作り方で、方法がありましたら教えていただきたく質問させて頂きました。 【基データ】は、 ・個人のID ・氏名 ・作業内容(A~F) ・上記作業の完了日 という一覧となっております。 とあるデータベースから抽出したもので、 抽出段階でこの配列を変更することはできません。 この【基データ】をもとに、 重複するIDと氏名をひとつにまとめて、 作業内容を列ごとに並べ、 該当するセルに完了日を表示させる という表を作成したいのですが、 なにか方法はありますでしょうか? 【基データ】には膨大な量のデータがあるので、 良い方法があると助かります。 簡単な図を添付します。 説明がわかりづらく申し訳ございませんが 宜しくお願い致します。

  • Excelで一列に並んだデータから表を作成したい

    Excelで、A列に入力したデータがあります。 これを、横3列使った表に加工したいのですが、どのような方法がありますでしょうか? 例えば、A1~A5に入力されたデータを、横3×縦2の表にしたいのです。 A1     A1 A2 A3 A2     A4 A5 A3  →   A4 A5 関数など使ってできないかと考えたのですが方法がわからず、 仕方なくA1~A3をコピー→行列を貼り付けで表を作成しました。 が、データが100個以上あるのでどうにも時間がかかってしまいます。 何か良い方法ありましたら教えてください。

  • VBA 表作成 再 続

    引き続きよろしくお願いします。 入力データというブックがありそこには B列に日付と曜日(日付の下)3行目~、 M列に区分(1か2が入力)3行目~、 T列に商品名3行目~、 AQ列に商品数3行目~、 BA列4行目~にコードが入力されています。 日付を入力したブックに 入力データにある、日付の部分を見て入力フォームで日付から1ヶ月の間の日付で一致すれば、商品名、コードを別ブックにある表に貼り付けます。日付部分の表に数値を商品名とコードにあわせて貼り付け、日付も、商品名もコードも同じであれば足してから表示します。 元にあるのはひとつ分しかはいらないので増えるたびに行数を挿入していくようにします。 最初にある表は    B   M   L ・・・ 4          日付・・・ 5          曜日・・・ 6  商品名 コード 数値・・・ 7          小計・・・ 8  商品名 コード 日付・・・ 9          小計・・・  10         合計・・・ という表になっています。上段には区分1、下段には区分2のものが入ります。 わかりますかね・・・;; 説明下手で申し訳ありません よろしくお願いします

  • エクセル:横一列のデータを別の形式の表にしたい

     ある製品の発注数を店舗・日付け別の表にする必要があります。元データから目的の表を作成するために、効率がよく間違いが極力少ない方法を教えて下さい(ちなみに今は元データを見ながら手入力しています)。    <元データ>    一列に、店番号・店名・日付け・発注数などの    項目が並んでいる。(これが500行ほどあります)  <目的の表>基本的な形式の変更はできません。     縦軸に店番号と店名、横軸に日付(1ヶ月分)。店名と日付を結んだセルに、発注数を入力。  よろしくお願いします。

  • 表計算

    表計算はぜんぜんわかりません教えてください! たとえば 発注をするにあたって この注文がはいるとこの種類をちゅうもんしないといけない あれがはいるとこれを注文しないといけないとかがわかるようにできたらいいなぁって思っています。 、行の方には商品名 列の方にはそれに入るものまで入力しましたが どうしたらよいでしょうか??

  • エクセル表の作成

    下記のCSVデータから、希望の表形式にしたいです。 ご教授ください。 【CSVデータ】 A列    B列     C列     D列     E列 タイトル  (1)     (2)     (3)      (4) 1      0   100   150   0  2     100   0   150   0  3      0  100   0   100  4      0   100   150   0  5     100   100   150   0  【希望の表形式】 A列  B列  C列 1    (2)  100     (3)  150 2   (1)  100     (3)  150 3   (2)  100     (4)  100 【希望の表形式】は多少違う形でも構いません。 作成方法は関数やピポット、なければ(マクロ)で教えてください。 宜しくお願い致します。