2012-02-22 41 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

我從來不知道這一點,謝謝! – 2012-02-22 09:51:27

+1

謝謝,我也不知道這一點。 – k80sg 2012-02-22 13:33:38

+1

真是一個美麗的早晨,這個答案只是讓我的一天,感謝所以。 – Yaroslav 2013-05-09 07:57:42