2014-05-31 8 views
0

У меня есть дубликаты в конечном результате. Я попытался использовать Distinct, а также статью group by.Удалить дубликаты в левом соединении SQL Server

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 

В таблице заказов есть 8166 строк, и я хочу, чтобы в конечном итоге было много столбцов.

enter image description here

enter image description here

! [Введите описание изображения здесь] [3]

enter image description here

+2

Не могли бы вы показать нам несколько строк из двух таблиц и какие «дубликаты» вы видите в конечном результате? 'DISTINCT' всегда применяется к ** всем столбцам ** результата - поэтому, если у вас есть какая-либо разница в одном из значений столбца, это не дубликат ** –

+0

Я бы вырезал колонки, пока вы не увидите дубликатов и работать оттуда. Но я медленно. – johnny

ответ

2

Один из способов, чтобы получить один идентификатор отслеживания использовать агрегатную функцию и удалить trackingid от group by статья:

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; 
Смежные вопросы