1

50列のテーブルがあります。2 つの行が挿入されています。そのテーブルからのみ値を取得して3行目を追加したい。

insert into Sample([IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH])
values (select [IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH] 
     from Sample where IDX = 2
) 

上記の例では、いくつかの列しか取りませんでした。このクエリを実行しようとすると、次のようなメッセージが表示されます。

VALUES 句で指定された値よりも多くの列が INSERT ステートメントに含まれています。VALUES 句の値の数は、INSERT ステートメントで指定された列の数と一致する必要があります。

ここで、Label フィールドは計算値です。[ラベル] = [コード]+[名前] どうすれば解決できますか?

ありがとう

4

3 に答える 3

1

使用する:

Sample([IDX]、[CODE]、[NAME]、[BILLING_ADDRESS]、[PRIMARY_CONTACT_NAME]、[PRIMARY_CONTACT_EMAIL]、[SECONDARY_CONTACT_NAME]、[SECONDARY_CONTATCT_EMAIL]、[RDBMS_SERVER]、[RDBMS_SERVER]に挿入]、[ETL_FOLDER_PATH])select [IDX]、[CODE]、[NAME]、[BILLING_ADDRESS]、[PRIMARY_CONTACT_NAME]、[PRIMARY_CONTACT_EMAIL]、[SECONDARY_CONTACT_NAME]、[SECONDARY_CONTATCT_EMAIL]、[SECONDARY_CONTATCT_EMAIL]、[SECONDARY_CONTATCT_EMAIL]、[R 、[RDBMS_PWD]、[ETL_FOLDER_PATH] from Sample where IDX = 2

[ラベル]は、挿入する必要がなく、独自に計算されます。

于 2012-05-21T11:01:49.257 に答える
0

使用しないでくださいvalues

insert into Sample([IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH])
select [IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH] 
     from Sample where IDX = 2
于 2012-05-21T11:03:48.203 に答える
0

1 行の静的データ (クエリの結果ではない) を挿入する場合は、「値」を使用する必要があります。

クエリの結果である多数の行 (または単一の行) を挿入するには、次の構文を使用します。

insert into (column, column, ...)
  select column, column
    from xxxx
于 2012-05-21T11:08:54.760 に答える