2012-02-22 7 views
4

У меня есть часть моего запроса, как показано ниже, в которой TOP 1 должен быть разделен между 2 записями, так как есть 2 выхода, которые имеют одинаковый счет посещения. По-видимому, запрос будет возвращать только одну запись. Как я могу отобразить «точный» вывод в этом случае?SQL Server + Неверный вывод TOP 1

Select TOP 1 (O.Name) as MostVisited 
     From [Trans] T 
      INNER JOIN [Outlet] O 
      On (T.Outlet_Code = O.Code) 

     Where [VoidBy] IS NULL AND [VoidOn] IS NULL AND CardNo In  
      (Select [CardNo] From [Card] Where [CardNo] = 'CARDX' AND [MemberID] = @MemberId) 
     Group by O.Name  
     Order by Count(T.Outlet_Code) Desc 

ответ

10
Select TOP (1) WITH TIES (O.Name) as MostVisited 
     .... 

WITH TIES предусматривает "совместное топовых" ситуаций.

Пример:

DECLARE @t TABLE (foo int, qty int); 
INSERt @t VALUES (1, 100), (3, 200), (2, 200); 

-- one row, arbitrary 
SELECT TOP (1) * FROM @t ORDER BY qty DESC; 

-- both rows with "TOP 1 value" 
SELECT TOP (1) WITH TIES * FROM @t ORDER BY qty DESC; 
+1

Я никогда не знал об этом, спасибо! –

+1

Спасибо, я тоже этого не знал. – k80sg

+1

Какое красивое утро, этот ответ только что сделал мой день, спасибо ТАК. – Yaroslav

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