2012-03-30 16 views
22

Necesito contar el número de filas que devuelve la consulta siguiente.Contando el número de filas devuelto por una consulta de selección

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 

He tratado con el siguiente

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) 

Se da un mensaje de error en el analizador de consultas, que dice lo siguiente:

Msg 102, nivel 15, estado 1, línea 7 incorrecta sintaxis cerca de ')'.

+1

¿Se consideró alguna vez '@@ ROWCOUNT'? – HABO

Respuesta

46

SQL Server requiere subconsultas que SELECT FROM o JOIN que tiene un alias.

Añadir un alias a su subconsulta (en este caso 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 
+1

+1 tablas derivadas necesitan un alias –

+0

Me ayuda mucho ... Thnx –

0
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 
+2

Esto le dará un montón de filas con el 'COUNT' para la agrupación, no un recuento de las filas totales devueltas. – JNK

+0

No obtengo un recuento del resultado en realidad. – Joshua

9

trate de envolver toda su selecto entre paréntesis, a continuación, ejecutar una cuenta (*) en la que

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 
+0

Está trabajando ahora. Gracias. Por qué has usado myNewTable – Joshua

+1

Es solo un nombre inventado, puedes llamarlo como quieras. Supongo que un nombre mejor sería [MonitorRequestsWith5OrMoreMonitors] –

+1

+1 tablas derivadas necesitan un alias –

5

La sintaxis el error se debe a que falta un alias para la subconsulta:

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

+1 tablas derivadas necesitan un alias –

Cuestiones relacionadas