Подсчет количества строк, возвращаемых выбранным запросом
Мне нужно подсчитать число строк, возвращаемое следующим запросом.
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 Неверный синтаксис рядом с ')'.
Ответы
Ответ 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