Agregação: Grouping with cube



Exemplo de utilização de agregação GROUP BY CUBE em T-SQL

drop table #AggregationTable

SELECT [IntegradoCRM], [AgenteAlteracao], [NomeEntidade], [Operacao], COUNT(*) AS NumeroRegistos
, GROUPING([IntegradoCRM]) 'isIntegradoCRMGroup'
, GROUPING([AgenteAlteracao]) 'isAgenteAlteracaoGroup'
, GROUPING([NomeEntidade]) 'isNomeEntidadeGroup'
, GROUPING([Operacao]) 'isOperacaoGroup'
, Grouping_ID ([IntegradoCRM], [AgenteAlteracao], [NomeEntidade], [Operacao]) 'isGroupingRow'
INTO #AggregationTable
  FROM [Pec_Stagingarea_to_CRM_Online].[pec].[Integracao]
  WHERE  IntegradoCRM = 0
  GROUP BY [IntegradoCRM], [AgenteAlteracao], [Operacao], [NomeEntidade]
  WITH CUBE;

select ISNULL([NomeEntidade], 'Total registos por processar'), SUM(NumeroRegistos) AS Numeroregistos
FROM #AggregationTable
WHERE isIntegradoCRMGroup = 1 AND isOperacaoGroup = 1 AND isAgenteAlteracaoGroup = 1
GROUP BY [NomeEntidade]
order by [NomeEntidade]

select ISNULL([NomeEntidade], 'Total'), AgenteAlteracao, SUM(NumeroRegistos) AS Numeroregistos
FROM #AggregationTable
WHERE isIntegradoCRMGroup = 1 AND isOperacaoGroup = 1 AND isAgenteAlteracaoGroup = 0
GROUP BY AgenteAlteracao, [NomeEntidade]
order by AgenteAlteracao, [NomeEntidade]

select ISNULL([NomeEntidade], 'Total'), AgenteAlteracao, [Operacao], SUM(NumeroRegistos) AS Numeroregistos
FROM #AggregationTable
WHERE isOperacaoGroup = 0 AND isAgenteAlteracaoGroup = 0 AND isIntegradoCRMGroup = 0
GROUP BY AgenteAlteracao, [NomeEntidade], [Operacao]
order by AgenteAlteracao, [NomeEntidade], [Operacao]


select [Operacao], SUM(NumeroRegistos) AS Numeroregistos
FROM #AggregationTable
WHERE isOperacaoGroup = 0 AND isAgenteAlteracaoGroup = 1 AND isNomeEntidadeGroup = 0 AND isIntegradoCRMGroup = 0
GROUP BY [Operacao]
GO


Referência: SELECT - GROUP BY- Transact-SQL
Licença CC BY-SA 4.0 Silvia Pinhão Lopes, 26.6.18
Print Friendly and PDF

Sem comentários:

Com tecnologia do Blogger.