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