2015-05-29 2 views
-2

У меня есть таблица, давайте назовем ее TempAccount с столбцом с именем AccountID. Он содержит числа от 1,2,3 ... и так далее.Как использовать функцию max с select top в sql

Мое требование состоит в том, что я должен выбрать максимальное значение из десяти лучших идентификаторов учетной записи.

Я знаю, что могу сделать это, создав временную таблицу и вставив в нее верхние 10 значений, а затем выберем максимальное значение из этой таблицы. Но я надеялся, что для этого я могу использовать какой-либо прямой запрос.

Что-то вроде MAX(SELECT TOP 10 AccountID FROM TempAccount)

Что является лучшим способом я могу этого достичь?

Примечание: Я использую SQL Server 2012

+1

Как определить первые 10 учетных записей? –

+0

Максимальное значение столбца в одной таблице любой другой таблицы? – Anil

+0

@wewesthemenace Предположим, что таблица имеет 1000 значений. Я хочу выбрать 10 лучших в этом и в том, что я хочу выбрать max. Если я напрямую использую max, это даст мне максимум всех значений в таблице – nitinvertigo

ответ

1

Вы можете использовать запрос CTE. Пример:

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

Точно то, что я хотел !!! Большое спасибо – nitinvertigo

+0

Надеюсь, вы знаете, что строки «TOP 10», возвращаемые CTE, не гарантируются? Вы не указали ORDER BY, поэтому TOP 10 может по существу вернуть любые 10 строк, которые ему нравятся. – Oliver

+0

@Oliver Данные в таблице TempAccount предварительно заполнены в желаемом формате (по возрастанию). Поэтому мне не нужно указывать ORDER BY здесь, в CTE – nitinvertigo

1

Проделайте TOP 10 в производной таблице, а затем использовать MAX на его результат. Что-то вроде:

select max(dt.col1) 
from 
(
    select top 10 col1 
    from table 
    where ... 
    order by ... 
) dt 
Смежные вопросы