2015-05-29 66 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