ТОП функция в SQL Server 2005 не дает правильного ответа - PullRequest
0 голосов
/ 06 марта 2012

Как я могу использовать функцию TOP в SQL Server 2005 для одного столбца в таблице вместе с функцией подсчета?

Я получаю только один счет для этого запроса, где у меня должно быть 35 записей. это мой запрос

select top(1) room_no, count(room_no) from rooms

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Похоже, что вы хотите следующее:

select room_no,count(room_no)
from rooms
group by room_no

Кстати, мне интересно, почему он будет выполняться без group by.Должен сгенерировать ошибку.

0 голосов
/ 06 марта 2012

Функция COUNT оценивается после TOP. Вот почему вы получаете только один на счет. То, что вы хотите, это что-то вроде этого

SELECT TOP(1) dbo.Table.Column1, (SELECT COUNT(*) FROM dbo.Table)
FROM dbo.Table

Также, как уже упоминалось, вы действительно должны что-то заказывать.

Редактировать: Это также работает:

SELECT TOP(1) dbo.Table.Column1, COUNT(*) OVER() AS Total
FROM dbo.Table

Кажется также более эффективным (хотя проверено только на небольшом наборе данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...