sql查询写作

时间:2017-09-11 17:12:35

标签: sql sql-server

我想在我的数据库中填写PurchaseOrders和PurchaseOrder详细信息表,并使用我已成功登录表中的文件中的数据。任务 是将ST列值获取到特定的目标表(PurchaseOrders和PurchaseOrderDetails)

到目前为止

查询(sqlserver 2014& 2012) :

insert into PurchaseOrders( 
     NameId, 
     LocationId, 
     VendorId, 
     PurchaseOrderDate, 
     PurchaseOrderSerialNo, 
     PurchaseOrderCreatBy, 
     PurchaseOrderCreateOn, 
     ModBy, 
     ModOn
 ) 
 select 
     '10', 
     Locations.Id, 
     cast (VENDOR as int), 
     cast(PO_DATE as date), 
     (select distinct cast(PurchaseOrderNUMBER as int) from StagingTable), 
     'name', 
     getdate(), 
     NULL, 
     NULL 
 from 
     [dbo].[StagingTable] ST
          join Locations  on Locations.Code = ST.LOCATION 
          join Vendor   on Vendor.Code = ST.VENDOR 

在运行此项时,我得到了以下内容,目标表中没有任何内容:

(0 row(s) affected)

PurchaseOrderDetails的相同内容是rqd?

1 个答案:

答案 0 :(得分:0)

就结果而言,以下是为我工作的!

if exists (select OrdersSerialNo FROM PurchaseOrders PO join [dbo].[StagingTable] ST on PO.OrdersSerialNo  != ST.PurchaseOrder_NUMBER)

begin

insert into PurchaseOrders( 
     NameId, 
     LocationId, 
     VendorId, 
     PurchaseOrderDate, 
     PurchaseOrderSerialNo, 
     PurchaseOrderCreatBy, 
     PurchaseOrderCreateOn, 
     ModBy, 
     ModOn
 ) 

 select 
     @IdName, 
     Locations.Id, 
     cast (VENDOR as int), 
     cast(PO_DATE as date), 
     (select distinct cast(PurchaseOrderNUMBER as int) from [dbo].[StagingTable]), 
     'name', 
     getdate(), 
     NULL, 
     NULL 

 from 
     [dbo].[StagingTable] ST

inner join PurchaseOrders PO on PO.OrdersSerialNo  != ST.PurchaseOrder_NUMBER

inner join Products  on Products.Code = ST.ITEMCode 

inner join Locations  on Locations.Code = ST.LOCATION 

where   isnumeric(VENDOR) = 1 and isnumeric(PO_NUMBER) = 1 and isdate(PO_DATE) = 1 
)
end

对迟到的回应道歉!