2013-07-19 4 views
0

У меня есть этот запрос:Tricky SQL-запрос (! Для меня по крайней мере)

SELECT trackingno, COUNT(trackingno) AS NumberOfTimes 
FROM shippinginfo 
GROUP BY trackingno HAVING (COUNT(trackingno)>1) 
ORDER BY NumberOfTimes DESC 

Он сообщает что-то вдоль линий

Trackingno | NumberofTimes 
12345  | 2 
23456  | 2 
34567  | 3 

Есть ли способ сделать запрос так, чтобы я показать другие данные столбца?

Trackingno | OrderId 
12345  | oid1 
12345  | oid2 
23456  | oid3 
23456  | oid4 
34567  | oid5 
34567  | oid6 

В основном я ищу любые номера отслеживания DUPLICATE (trackingno) в таблице, а затем сообщить номер для отслеживания и OrderId (OrderID) для повторяющихся строк отслеживая номер, так что я могу связаться с клиентами, которые имеют дубликат отслеживание номеров.

+0

Так что желаемый результат? – zerkms

ответ

2
SELECT * 
    FROM shippinginfo 
WHERE trackingno IN (

    SELECT trackingno 
     FROM shippinginfo 
    GROUP BY trackingno 
    HAVING COUNT(*) > 1 

) 

Так во внутреннем запросе вы выбираете все trackingno, которые продублированы, то в космическом вы выбираете то, что вам нужно

+0

Отлично! Еще одно дополнение, я просто понял, выполнив ваш запрос, что у нас есть куча строк с пустым trackingno (не нуль, просто никаких данных). все они возвращаются, поскольку они должны основываться на запросе. Есть ли способ исключить пустые значения? – JeffreyLazo

+0

Просто добавьте 'WHERE trackingno! = ''' Или что вам нужно во внутреннем? – zerkms

1
SELECT Trackingno,orderId 
FROM shippinginfo 
WHERE Trackingno IN (
         SELECT trackingno 
         FROM shippinginfo 
         GROUP BY trackingno 
         HAVING COUNT(*) > 1 

        ) 
+0

, похоже, работает, есть ли способ отслеживания номера для показа? я вижу только данные заказа и пробел без отслеживания – JeffreyLazo

Смежные вопросы