计算select查询返回的行数

Jos*_*hua 33 t-sql sql-server sql-server-2008

我需要计算以下查询返回的行数.

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
Run Code Online (Sandbox Code Playgroud)

我试过以下

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)  
Run Code Online (Sandbox Code Playgroud)

它在查询分析器中给出了一条错误消息,其中说明如下:

消息102,级别15,状态1,行7'''附近的语法不正确.

JNK*_*JNK 59

SQL Server需要您SELECT FROMJOIN具有别名的子查询.

为子查询添加别名(在本例中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
Run Code Online (Sandbox Code Playgroud)


Mik*_*use 11

尝试将整个选择括在括号中,然后对其运行计数(*)

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
Run Code Online (Sandbox Code Playgroud)


Die*_*ego 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)  mySubQuery  /* Alias */
Run Code Online (Sandbox Code Playgroud)