SQL Server:将数据从列复制到另一个包含许多列的表

SQL Server:将数据从列复制到另一个包含许多列的表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个现有的表,其中存储了从另一台服务器获取的数据 现在,我想把这些数据复制到一个表中,在这个表中,这将是我可以执行CRUD操作的最后一个表 第一个表(参考数据库)要还原到我的目标-确定 INSERT INTO [PFTracking].[dbo].[TempTable] SELECT c.[pf_id] ,a.[RequestDate] ,c.[pf_carrierUsed] ,b.[PiecePrice] * b.[PartQuant

我有一个现有的表,其中存储了从另一台服务器获取的数据

现在,我想把这些数据复制到一个表中,在这个表中,这将是我可以执行CRUD操作的最后一个表

第一个表(参考数据库)要还原到我的目标-确定

INSERT INTO [PFTracking].[dbo].[TempTable]
   SELECT 
      c.[pf_id]
      ,a.[RequestDate]
      ,c.[pf_carrierUsed]
      ,b.[PiecePrice] * b.[PartQuantity] as [Amount]
      ,c.[pf_type]
      ,c.[pf_resSupplier]
      ,c.[pf_resCustomer]
      ,c.[pf_trailerNum]
      ,b.[PartDesc]
      ,c.[pf_chargeBack]
      ,c.[pf_chargetoPlant]
   FROM 
      [CNCTC-WEB01].[NOP_PR].[dbo].[Requests] a
   JOIN 
      [CNCTC-WEB01].[NOP_PR].[dbo].[Parts] b on a.[RequestID] = b.[RequestID]
   JOIN 
      [PHRIZ-WEBAPP01].[PFTracking].[dbo].[Tbl_PFExcel] c ON  b.[PartNumber] LIKE '%' + c.pf_id + '%'
   WHERE 
      a.[EntityName] LIKE '%PTA' 
      AND a.[RequestDate] BETWEEN '2015-04-20 00:00:00.000' AND GETDATE()
现在。。由于my
Attentiable
由以下列组成:

   [PTAID]
  ,[RequestDate]
  ,[ProvName]
  ,[Amount]
  ,[INorOUT]
  ,[Supplier]
  ,[Customer]
  ,[Program]
  ,[IssueDesc]
  ,[Chargeable]
  ,[Company]
我尝试执行以下命令:

INSERT INTO [PFTracking].[dbo].[UserInput]
    SELECT
        [PTAID]
      ,[RequestDate]
      ,[ProvName]
      ,[Amount]
      ,[INorOUT]
      ,[Supplier]
      ,[Customer]
      ,[Program]
      ,[IssueDesc]
      ,[Chargeable]
      ,[Company]
 FROM [PFTracking].[dbo].[TempTable]
还有这个:

INSERT INTO [PFTracking].[dbo].[UserInput]
   SELECT *
   FROM [PFTracking].[dbo].[TempTable]
但我得到的只是一个错误:

味精213,第16级,状态1,第3行
插入错误:提供的值的列名或数目与表定义不匹配


你知道如何解决我的问题吗?

作为最佳实践,你应该将insert语句写成:

Insert into [PFTracking].[dbo].[UserInput](Col1,Col2,...)
-- list the names of columns explicitly in which data is to be inserted
SELECT
        [PTAID]
      ,[RequestDate]
      ,[ProvName]
      ,[Amount]
      ,[INorOUT]
      ,[Supplier]
      ,[Customer]
      ,[Program]
      ,[IssueDesc]
      ,[Chargeable]
      ,[Company]
 FROM [PFTracking].[dbo].[TempTable]

您可以省略从
标识
属性、
默认
约束自动获取其值的列名,或者在允许
空值
时,作为最佳做法,您应该将insert语句编写为:

Insert into [PFTracking].[dbo].[UserInput](Col1,Col2,...)
-- list the names of columns explicitly in which data is to be inserted
SELECT
        [PTAID]
      ,[RequestDate]
      ,[ProvName]
      ,[Amount]
      ,[INorOUT]
      ,[Supplier]
      ,[Customer]
      ,[Program]
      ,[IssueDesc]
      ,[Chargeable]
      ,[Company]
 FROM [PFTracking].[dbo].[TempTable]

您可以省略从
标识
属性、
默认
约束自动获取其值的列名,或者在允许
空值
时,作为最佳做法,您应该将insert语句编写为:

Insert into [PFTracking].[dbo].[UserInput](Col1,Col2,...)
-- list the names of columns explicitly in which data is to be inserted
SELECT
        [PTAID]
      ,[RequestDate]
      ,[ProvName]
      ,[Amount]
      ,[INorOUT]
      ,[Supplier]
      ,[Customer]
      ,[Program]
      ,[IssueDesc]
      ,[Chargeable]
      ,[Company]
 FROM [PFTracking].[dbo].[TempTable]

您可以省略从
标识
属性、
默认
约束自动获取其值的列名,或者在允许
空值
时,作为最佳做法,您应该将insert语句编写为:

Insert into [PFTracking].[dbo].[UserInput](Col1,Col2,...)
-- list the names of columns explicitly in which data is to be inserted
SELECT
        [PTAID]
      ,[RequestDate]
      ,[ProvName]
      ,[Amount]
      ,[INorOUT]
      ,[Supplier]
      ,[Customer]
      ,[Program]
      ,[IssueDesc]
      ,[Chargeable]
      ,[Company]
 FROM [PFTracking].[dbo].[TempTable]

您可以忽略从
标识
属性、
默认
约束或允许
空值
时自动获取其值的列名。错误消息非常明确。错误消息非常明确。错误消息非常明确。错误消息非常明确。谢谢。。我明白了;)谢谢我明白了;)谢谢我明白了;)谢谢我明白了;)