从两个表插入到具有外键约束的一个空表中

时间:2018-07-16 02:05:16

标签: sql

我有一个名为PurchaseOrderAccount的表,该表为空。我需要从名为DailyCosts的表中插入帐户代码。另外,我需要从Pu​​rchaseOrder.ID插入PurchaseOrderID。这些都是外键约束。没有列将接受Null。这就是我所拥有的:

   Insert Into PurchaseOrderAccount (WellID, JobID,ID,PurchaseOrderID,AccountCode)
    Select  DailyCosts.WellID, 
            DailyCosts.JobID,
            NEWID(),
            PurchaseOrder.ID,
            DailyCosts.AccountCode 
    From DailyCosts 
    inner join
         PurchaseOrder 
       on DailyCosts.Notes =PurchaseOrder.PONumber 
    Join 
         PurchaseOrderDailyCost 
       On DailyCosts.DailyCostID = PurchaseOrderDailyCost.DailyCostID 
   Where DailyCosts.WellID = '24A-23' 
   Group By DailyCosts.WellID, 
            DailyCosts.JobID,
            PurchaseOrder.ID,
            DailyCosts.AccountCode; 

有了这个,我得到191条记录。我只想从DailyCosts获得54的唯一AccountCodes。任何方向,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为,如果您想要DailyCosts.AccountCode和PurchaseOrder.ID的所有唯一组合,则必须删除“分组依据”中的DailyCosts.JobID。

当您过滤了DailyCosts.WellID ='24A-23'时,分组依据不会影响它。

  Insert Into PurchaseOrderAccount (WellID, ID,PurchaseOrderID,AccountCode)
    Select  DailyCosts.WellID, 
            NEWID(),
            PurchaseOrder.ID,
            DailyCosts.AccountCode 
    From DailyCosts 
    inner join
         PurchaseOrder 
       on DailyCosts.Notes =PurchaseOrder.PONumber 
    Join 
         PurchaseOrderDailyCost 
       On DailyCosts.DailyCostID = PurchaseOrderDailyCost.DailyCostID 
   Where DailyCosts.WellID = '24A-23' 
   Group By DailyCosts.WellID, 
            PurchaseOrder.ID,
            DailyCosts.AccountCode;

在这里,我相信会有多个JobID导致您的总数达到191,而不是预期的41。请告诉我这是否适合您。