2015-05-29 60 views
-2

我有一张表,我们称它为TempAccount,并带有一个名为AccountID的列。它包含来自1,2,3的数字......等等。如何在sql中选择顶部使用max函数

我的要求是我应该从前10个AccountID中选择最大值。

我知道我可以通过创建一个临时表并在其中插入前10个值然后从该表中选择最大值来完成。但我希望如果有任何直接的查询我可以用来实现这一点。

喜欢的东西MAX(SELECT TOP 10 AccountID FROM TempAccount)

什么是我能做到这一点的最好方法是什么?

注:我使用SQL Server 2012的

+1

如何定义前10个账户ID? –

+0

最大值是任何其他表的同一个表中的列吗? – Anil

+0

@wewesthemenace假设表格有1000个值。我想选择前10名,并且我想选择最大值。如果我直接使用最大它会给我最大的所有值在表 – nitinvertigo

回答

1

您可以使用CTE查询。示例:

WITH CTEQuery (AccountId) AS (
    SELECT TOP 10 AccountId 
    FROM TempAccount 
) 
SELECT MAX(AccountId) 
FROM CTEQuery 
+0

正是我想要的!非常感谢 – nitinvertigo

+0

我希望您知道CTE返回的“TOP 10”行无法得到保证?你没有指定一个ORDER BY,所以TOP 10基本上可以返回任何它喜欢的10行。 – Oliver

+0

@Oliver TempAccount表中的数据以我想要的格式预先填充(升序)因此,我不需要在CTE – nitinvertigo

1

执行TOP 10在派生表,然后在它的结果使用MAX。例如:

select max(dt.col1) 
from 
(
    select top 10 col1 
    from table 
    where ... 
    order by ... 
) dt