获取包含特定名称的空值的额外行

时间:2019-03-13 22:06:31

标签: sql

在我的查询中,如果CompanyName的Coamount = NULL,则Final应该等于合同金额。如果CompanyName具有Coamount,则Final将为ContractAmount + Coamount。

我得到了所有这些答案,但查询还返回了我那些已经存在coamount的公司名称,其Coamount值为NULL的行。

例如:第1行,当我根据查询获得第2行作为答案时,为什么该行会出现?

代码如下:

SELECT DISTINCT 
                    HBRegions.RegionName,PropertyGroups.Name AS Owner,Properties.EntityID,  Properties.Address,Vendors.CompanyName,
                    SubContractorDrawDetails.InvoiceUploadDate,SubContractorDrawDetails.InvoiceAmount,SubContractorDrawDetails.PaymentDate,
                     LienWaivers.FinalLienWaiverRcvdDate,SubContractorDrawDetails.PaymentAmount, subcontractors.ContractAmount,cc.Coamount ,
                     (subcontractors.ContractAmount + cc.Coamount ) AS ActualContractAmount,

                     case when cc.Coamount is null then SubContractors.ContractAmount
                     when CC.Coamount is not null then (subcontractors.ContractAmount + cc.Coamount ) end as Final

FROM         Users inner JOIN
                      Vendors ON Users.UserId = Vendors.UserID inner JOIN
                      LienWaivers ON Users.UserId = LienWaivers.UserID inner JOIN
                      Constructions ON LienWaivers.ConstructionID = Constructions.ConstructionId inner JOIN
                      Properties ON Constructions.HBId = Properties.HBId inner  JOIN
                      ChangeOrderDetails ON Constructions.ConstructionId = ChangeOrderDetails.ConstructionId left JOIN
                      ChangeOrderLineItems ON Users.UserId = ChangeOrderLineItems.SubContractorId AND 
                      ChangeOrderDetails.ChangeOrderId = ChangeOrderLineItems.ChangeOrderId

                      left join
                      (select  sum(ChangeOrderDetails.ChangeOrderApprovedAmountContractor) as Coamount, ChangeOrderLineItems.SubContractorId,Constructions.ConstructionId
                      from ChangeOrderDetails  inner join ChangeOrderLineItems
                      on ChangeOrderDetails.ChangeOrderId = ChangeOrderLineItems.ChangeOrderId 
                      inner join Users on ChangeOrderLineItems.SubContractorId = Users.UserId 
                      left join Constructions on Constructions.ConstructionId = ChangeOrderDetails.ConstructionId 
                     -- left join  Properties on Properties.HBId = Constructions.HBId 
                    where ChangeOrderDetails.ChangeOrderApprovedAmountContractor is not null
                      group by ChangeOrderLineItems.SubContractorId,Constructions.ConstructionId
                      ) AS cc on cc.SubContractorId = ChangeOrderLineItems.SubContractorId and cc.ConstructionId = Constructions.ConstructionId
                    inner join   HBRegions ON Properties.RegionId = HBRegions.RegionID inner JOIN
                      PropertyGroups ON Properties.PropertyGroup = PropertyGroups.PropertyGroupId
                    inner join  SubContractors ON Users.UserId = SubContractors.UserID AND Properties.HBId = SubContractors.HBId 
                    inner join SubContractorDrawDetails ON SubContractors.SubContractorId = SubContractorDrawDetails.SubContractorId

WHERE (Properties.Address = '470 ROYCROFT BLVD BUFFALO NY 14225')[enter image description here][1] 

0 个答案:

没有答案