删除左联接SQL Server中的重复项

删除左联接SQL Server中的重复项,sql,sql-server-2008,join,left-join,Sql,Sql Server 2008,Join,Left Join,我的最终结果是重复的。我尝试使用Distinct以及groupby子句 Select distinct Orders.OrderNumber, Tracking.TrackingID, Orders.BalanceDue, Orders.Approved, Orders.Name, Orders.ShipCity , Orders.OrderDate, Orders.country, Orders.Shipping, Orders.CartId from

我的最终结果是重复的。我尝试使用
Distinct
以及
groupby
子句

Select distinct   
    Orders.OrderNumber, Tracking.TrackingID, 
    Orders.BalanceDue, Orders.Approved, Orders.Name, Orders.ShipCity ,  
    Orders.OrderDate, Orders.country, Orders.Shipping, Orders.CartId
from  
    orders
left join 
    Tracking on Orders.OrderNumber = Tracking.ordernum 
group by 
    Orders.OrderNumber, Orders.BalanceDue, Tracking.TrackingID, 
    Orders.Approved, Orders.Name, Orders.ShipCity, 
    Orders.OrderDate, Orders.country, Orders.Shipping, Orders.CartId
Orders表中有8166行,我只希望最终结果中有那么多列

!![在此处输入图像描述][3]


获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除
跟踪id

Select o.OrderNumber, max(t.TrackingID) as TrackingId,
       o.BalanceDue, o.Approved, o.Name, o.ShipCity,  
       o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join 
     Tracking t
     on o.OrderNumber = t.ordernum 
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity, 
         o.OrderDate, o.country, o.Shipping, o.CartId;

获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除
跟踪id

Select o.OrderNumber, max(t.TrackingID) as TrackingId,
       o.BalanceDue, o.Approved, o.Name, o.ShipCity,  
       o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join 
     Tracking t
     on o.OrderNumber = t.ordernum 
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity, 
         o.OrderDate, o.country, o.Shipping, o.CartId;

获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除
跟踪id

Select o.OrderNumber, max(t.TrackingID) as TrackingId,
       o.BalanceDue, o.Approved, o.Name, o.ShipCity,  
       o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join 
     Tracking t
     on o.OrderNumber = t.ordernum 
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity, 
         o.OrderDate, o.country, o.Shipping, o.CartId;

获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除
跟踪id

Select o.OrderNumber, max(t.TrackingID) as TrackingId,
       o.BalanceDue, o.Approved, o.Name, o.ShipCity,  
       o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join 
     Tracking t
     on o.OrderNumber = t.ordernum 
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity, 
         o.OrderDate, o.country, o.Shipping, o.CartId;

您能给我们看一下这两个表中的一些行,以及您在最终结果中看到的“重复项”吗?
DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。你能给我们看一下这两个表中的一些行吗,以及你在最终结果中看到的“重复项”吗?
DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。你能给我们看一下这两个表中的一些行吗,以及你在最终结果中看到的“重复项”吗?
DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。你能给我们看一下这两个表中的一些行吗,以及你在最终结果中看到的“重复项”吗?
DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。