Quiere insertar una fila en una tabla, que tiene una columna calculada, tomando fila o filas de la misma tabla

Tengo una tabla con 50 columnas. Tiene dos filas insertadas. Quiero agregar la tercera fila tomando valores solo de esa tabla.

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
) 

En el ejemplo anterior, tomé solo unas pocas columnas. Al intentar ejecutar esta consulta, muestra el siguiente mensaje.

Hay más columnas en la sentencia INSERT que valores especificados en la cláusula VALUES. El número de valores en la cláusula VALUES debe coincidir con el número de columnas especificado en la instrucción INSERT.

Aquí el campo Etiqueta es el valor calculado. [Etiqueta] = [Código]+[Nombre] ¿Cómo solucionarlo?

Muchas Gracias

preguntado el 21 de mayo de 12 a las 11:05

3 Respuestas

Uso:

inserte en Muestra ([IDX], [CÓDIGO], [NOMBRE], [DIRECCIÓN DE FACTURACIÓN], [NOMBRE_DE_CONTACTO PRIMARIO], [CORREO ELECTRÓNICO_DE_CONTACTO PRINCIPAL], [NOMBRE_DE_CONTACTO_SECUNDARIO], [CORREO ELECTRÓNICO_DE_CONTACTO_SECUNDARIO], [SERVIDOR_RDBMS], [NOMBRE_RDBMS_DB], [INICIO DE SESIÓN_RDBMS], [RDBMS_PWD ] ,[ETL_FOLDER_PATH]) seleccione [IDX],[CÓDIGO],[NOMBRE],[DIRECCIÓN_DE FACTURACIÓN],[NOMBRE_DE_CONTACTO PRIMARIO] ,[CORREO ELECTRÓNICO_DE_CONTACTO PRIMARIO] ,[NOMBRE_DE_CONTACTO_SECUNDARIO] ,[CORREO ELECTRÓNICO_DE_CONTACTO_SECUNDARIO] ,[SERVIDOR_RDBMS] ,[NOMBRE_RDBMS_DB] ,[LOGIN_RDBMS] ,[RDBMS_PWD] ,[ETL_FOLDER_PATH] de la muestra donde IDX = 2

[Etiqueta] se calculará por sí solo, no es necesario insertarlo.

contestado el 21 de mayo de 12 a las 12:05

No, no está funcionando. Aquí [Etiqueta] archivada es el valor calculado. Combinación de [Código] y [Nombre] - Buscador

@YSSS Pero el valor [Etiqueta] ya debe haber estado presente en la tabla como lo indicó en su descripción. - Kapil Khandelwal

Sí... pero no está funcionando como se esperaba. Se muestra como "La columna "ETIQUETA" no se puede modificar porque es una columna calculada o es el resultado de un operador UNION". - Buscador

@YSSS OK, luego usa: insert into Sample([IDX],[CODE] ,[NAME] ,[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],[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 - Kapil Khandelwal

No use 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

contestado el 21 de mayo de 12 a las 12:05

Se deben usar "Valores" si desea insertar una fila de datos estáticos (no como resultado de una consulta).

Para insertar un número de filas (o una sola fila) que son el resultado de la sintaxis de uso de consulta:

insert into (column, column, ...)
  select column, column
    from xxxx

contestado el 21 de mayo de 12 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.