4

SELECTステートメントから結果テーブルを取得し、それを物理ファイルに移動したいと思います。

私は(W3Schoolsごとに)使用したいと思っていました:

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename 

残念ながら、IBMマニュアル(DB2 for i SQLリファレンス)によると

このステートメントは、最大で1つの行SELECT INTOで構成される結果テーブルを生成し、その行の値を変数に割り当てます。

だから私は多分私が使うことができると思いました:

このステートメントは、テーブルまたはビューに行を挿入します 。INSERTこのステートメントには3つの形式があります。1。using fullselect形式は、他のテーブルまたはビューの値を使用して1つ以上の行をテーブルまたはビューに挿入するために使用されます。
INSERT

残念ながら、それは私にはうまくいかないようです。

INSERT INTO <tablename>
FROM ( SELECT (*) FROM <querytableA>
       UNION
       SELECT (*) FROM <querytableB>)

結果テーブルを物理ファイルに移動することはできますが、これを行うには、カーソルを宣言してdo … whileから、物理ファイルに一度に1レコードずつ書き込む必要があります。私はこれを醜くて不法SELECT INTOだと考えており、またはINSERT INTOステートメントを使用できることを望んでいました。

結果テーブルを1つのエレガントなステートメントで物理ファイルに「ダンプ」するのを手伝ってください。

OS:IBM i v6.1
データベース:DB2

4

2 に答える 2

9

テーブルを自動的に作成する場合は、次のフォームも使用できます。

CREATE TABLE new_table_name 
AS (SELECT * FROM <querytableA> 
    UNION SELECT * FROM <querytableB>) WITH DATA

クエリのビューを作成して、必要に応じて結果セットを動的に構築できることに注意してください。ビューは、任意の HLL から論理ファイルとして参照できます。

CREATE VIEW new_table_name
AS SELECT * FROM <querytableA>
   UNION SELECT * FROM <querytableB>
于 2011-11-13T17:06:38.533 に答える
3

正しい構文は次のとおりです。

INSERT INTO <dest_table> 
Select * FROM <querytableA>
UNION
Select * FROM <querytableB>

これが機能するためには、<dest_table>がすでに存在し、およびの列と互換性のある列を持っている必要があり<querytableA>ます<querytableB>

詳細については、「 select-statementを使用した行の挿入」を参照してください。

于 2011-11-13T16:38:52.533 に答える