Подтвердить что ты не робот

Подсчет количества строк, возвращаемых выбранным запросом

Мне нужно подсчитать число строк, возвращаемое следующим запросом.

select m.Company_id
from Monitor as m
    inner join Monitor_Request as mr on mr.Company_ID=m.Company_id
    group by m.Company_id
    having COUNT(m.Monitor_id)>=5

Я пробовал со следующими

select COUNT(*) from
(
select m.Company_id
from Monitor as m
    inner join Monitor_Request as mr on mr.Company_ID=m.Company_id
    group by m.Company_id
    having COUNT(m.Monitor_id)>=5)  

Он выдает сообщение об ошибке в анализаторе запросов, в котором говорится следующее:

Msg 102, Level 15, State 1, Line 7 Неверный синтаксис рядом с ')'.

4b9b3361

Ответ 1

Для SQL Server требуются подзапросы, в которых вы SELECT FROM или JOIN должны иметь псевдоним.

Добавьте псевдоним в ваш подзапрос (в этом случае x):

select COUNT(*) from
(
select m.Company_id
from Monitor as m
    inner join Monitor_Request as mr on mr.Company_ID=m.Company_id
    group by m.Company_id
    having COUNT(m.Monitor_id)>=5)  x

Ответ 2

Попробуйте обернуть весь выбор в скобках, а затем запустите счетчик (*) на

select count(*)
from
(
   select m.id
   from Monitor as m 
    inner join Monitor_Request as mr 
       on mr.Company_ID=m.Company_id   group by m.Company_id
    having COUNT(m.Monitor_id)>=5
) myNewTable

Ответ 3

Синтаксическая ошибка связана только с отсутствием псевдонима для подзапроса:

select COUNT(*) from
(
select m.Company_id
from Monitor as m
    inner join Monitor_Request as mr on mr.Company_ID=m.Company_id
    group by m.Company_id
    having COUNT(m.Monitor_id)>=5)  mySubQuery  /* Alias */

Ответ 4

select COUNT(*)
from Monitor as m
    inner join Monitor_Request as mr on mr.Company_ID=m.Company_id
    group by m.Company_id
    having COUNT(m.Monitor_id)>=5