2017-12-14 8 views
0

2つのsasテーブルAとBがあり、Aには2つの列(columna columnb)があり、テーブルBには4つの列(columna columnb columnc columnd)、私はテーブルBにテーブルAのレコードを挿入したい、私は次のことを試してみましたが、それは私にエラーを示していますsasに列が多いテーブルに他のテーブルのレコードを挿入する方法

PROC SQL; 
    insert into B 
    select *, columnc='a', columnd='b' from A; 
QUIT; 
+0

エラーは何ですか? –

+0

テーブルAにcolumncが存在しない場合は、文字列 'a'を変数columncと比較することはできません。 – Tom

+0

@Tom OPは比較しようとしていません。 OPは 'a 'を' columnc'に、' b 'を 'columnd'に挿入しようとしています。 – Joe

答えて

2

追加の列を空白のままにしておきたい場合は、挿入に挿入しないでください。 SQLコードの代わりにSASコードを使用するほうがはるかに簡単です。あなたがに書いているターゲット表の列を指定する必要がSQL INSERTステートメントの

proc append base=b data=a force nowarn; 
run; 

、それ以外の場合は、あなたがそれらのすべての値を指定します想定しています。

insert into B (columna,columnb) 
    select columna,columnb 
    from A 
; 

代わりに、余分な列に定数を入力したい場合は、その定数をSELECTリストに含めます。

insert into B (columna,columnb,columnc,columnd) 
    select columna,columnb,'a','b' 
    from A 
; 

正しい順序で値を指定することが肯定的である場合は、列名をターゲットテーブルの指定から離れることができます。

insert into B 
    select *,'a','b' 
    from A 
; 
+0

ありがとう、それは私のために働く! – sweetyBaby

0

あなたは変数名をそのように指定することはできません。実際には、insert intoを使用して変数を指定することはできません。ここで

proc sql; 
    create table class like sashelp.class; 
    alter table class 
    add rownum numeric; 
    alter table class 
    add othcol numeric; 
    insert into class 
    select *, 1 as othcol, monotonic() as rownum from sashelp.class; 
quit; 

私は、列名を指定するasを使用しますが、それは実際に動作しないことがわかります:それはrownum列に1を置き、そしてothcolmonotonic()値、彼らはしているので、この例を参照してください。テーブルの順に

関連する問題