C# 为什么我的SQL查询返回重复的结果?

C# 为什么我的SQL查询返回重复的结果?,c#,asp.net,sql,C#,Asp.net,Sql,SQL如下-每个结果出现3次而不是一次 SELECT Consignments.LegacyID, TripDate, CollectionName, DeliveryName, Pallets, Weight, BaseRate, Consignments.FuelSurcharge, AdditionalCharges, BaseRate * Quantity AS 'InvoiceValue', Consignments.Customer, InvoiceNumber, CA

SQL如下-每个结果出现3次而不是一次

SELECT Consignments.LegacyID, TripDate, CollectionName, DeliveryName, Pallets, Weight, BaseRate, Consignments.FuelSurcharge, AdditionalCharges, BaseRate * Quantity AS 'InvoiceValue', Consignments.Customer, InvoiceNumber,
       CASE
          WHEN child.LegacyID = Consignments.Customer THEN child.LegacyID
          WHEN parent.LegacyID = Consignments.Customer THEN parent.LegacyID
          ELSE this.LegacyID
       END AS 'InvoiceAcc'
FROM SageAccount this
  LEFT JOIN SageAccount parent on parent.LegacyID = this.InvoiceAccount
  LEFT JOIN SageAccount child on this.LegacyID = child.InvoiceAccount
  JOIN Consignments on (Consignments.Customer = this.LegacyID AND this.Customer = 'True')
                    OR (Consignments.Customer = parent.LegacyID AND parent.Customer = 'True')
                    OR (Consignments.Customer = child.LegacyID AND child.Customer = 'True')
WHERE (this.LegacyID = @Customer) AND (TripDate BETWEEN @fromdate AND @todate) AND (InvoiceNumber IS NOT NULL)
SQL是为另一个类似的查询提供给我的,但这次我对它进行了修改,尝试将其用于我现在正在进行的查询,因此我假设我正在做一些愚蠢的事情


非常感谢。

可能是因为您的左联接每父行有3个子行。
执行select*以查看在相乘的行中结果的实际差异。

可能是因为左侧联接的每个父行有3个子行。
JOIN Consignments on (Consignments.Customer = this.LegacyID AND this.Customer = 'True')
OR (Consignments.Customer = parent.LegacyID AND parent.Customer = 'True')
OR (Consignments.Customer = child.LegacyID AND child.Customer = 'True')
执行select*以查看结果在相乘的行中的实际差异

JOIN Consignments on (Consignments.Customer = this.LegacyID AND this.Customer = 'True')
OR (Consignments.Customer = parent.LegacyID AND parent.Customer = 'True')
OR (Consignments.Customer = child.LegacyID AND child.Customer = 'True')
我想你应该使用这个.InvoiceAccount而不是这个.LegacyID

我想你应该使用这个.InvoiceAccount而不是这个.LegacyID