Подсчет количества строк, возвращаемых запросом выбора - PullRequest
31 голосов
/ 30 марта 2012

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

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)  

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

Сообщение 102, Уровень 15, Состояние 1, Строка 7 Неверный синтаксис рядом с ')'.

Ответы [ 4 ]

56 голосов
/ 30 марта 2012

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
9 голосов
/ 30 марта 2012

Попробуйте заключить весь ваш выбор в скобки, затем запустите счетчик (*) для этого

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
5 голосов
/ 30 марта 2012

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

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 */
0 голосов
/ 30 марта 2012
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...