Pregunta

Tengo la tabla de entrada de registro con las siguientes columnas relevantes: eventype, userid. Simplemente puedo resumir los datos utilizando la siguiente consulta para obtener un total para cada tipo de evento de usuario

SELECT     EventType, COUNT(EventUserID) AS Total, EventUserID
FROM         dbo.vSystemEventLog AS SE
GROUP BY EventType, EventUserID

Sin embargo, también necesito tener un total de ejecución para cada EventType individual, independientemente del usuario. ¿Cómo hago esto?

Salud

¿Fue útil?

Solución

Creo que esto podría ser lo que quieres:

SELECT      IsNull(EventType,'SUMMARY') as [EventType],
            IsNull(EventUserId, 'TOTAL') as [EventUserId], 
            COUNT(EventUserID) AS [Total]

FROM    dbo.vSystemEventLog
GROUP BY EventType, EventUserID With Cube

No estoy completamente seguro de lo que desea: la salida de muestra y/o los datos serían más útiles.

Sin embargo, supongo que necesitas agruparlo al revés para que las consultas se agrupen porEventUserId primero.

Ok, así que he creado estos datos de prueba y SQL. Creo que esto es lo que quieres.

Create Table #t
(
EventType int,
EventUserId int
)
Insert Into #t
Select 100, 18 union all Select 100, 18 union all Select 100, 18

Insert Into #t
Select 101, 16 union all Select 101, 16  union all Select 101, 16 
union all Select 101, 16 union all Select 101, 16  union all Select 101, 16 

Insert Into #t
Select 101, 18 union all Select 101, 18 union all Select 101, 18 union all Select 101, 18

Insert Into #t
Select 102, 18 union all Select 102, 18 


Select  IsNull(Convert(varchar(50), EventUserId), 'SUMMARY') As [EventUserId],
        IsNull(Convert(varchar(50), EventType), 'TOTAL') as [EventType],
        Count(EventUserId) as [Total]
From #t
Group By EventUserId, EventType with cube
Order by 1

drop table #t

Esto produce la siguiente salida:

Sample Data Query Results

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top