Ir para o conteúdo

Agrupar por

Em SQL, o GROUP BY instrução é usada com funções agregadas (COUNT(), MAX(), MIN(), SUM(), AVG()) para agrupar as linhas resultantes por uma ou mais colunas. Este artigo explicará como usar GROUP BY na Camada de Negócios do Vinyl.

Etapa 1: Crie uma Subconsulta

Para alavancar GROUP BY no Vinyl, primeiro você precisará criar uma Subconsulta objeto que fornece uma função agregada. A regra Subconsulta também deve especificar as colunas que você deseja GROUP BY. Se você estiver familiarizado com SQL, poderá confirmar a subconsulta GROUP BY lógica visualizando a aba SQL disponível na tela Regra na camada de negócios.

Exemplo de Regra de Subconsulta

Neste exemplo, criaremos uma regra de Subconsulta chamada Cliente (Agrupar por Subconsulta) que tem como alvo a tabela Cliente. Esta regra fornecerá um COUNT() função agregada e incluir as colunas que queremos GROUP BY, que são CustomerID e ProductName.

Visualização da aba Colunas:

colunasview.png

Visualização da aba SQL:

SELECT 
       C.ProductName AS ProductName,
       Count(1) AS Count,
       C.CustomerID AS CustomerID
 FROM     
       Customer AS C 
 GROUP BY 
      C.ProductName, 
C.CustomerID 

Etapa 2: Associar a Subconsulta a um Objeto de Negócios

Depois de ter uma Subconsulta com uma função agregada, junte a Subconsulta a um Objeto de Negócios. Depois que o Business Object for criado, você poderá usá-lo para Publicar na camada UI e expor os dados e informações resultantes em uma página do aplicativo.

Exemplo de Regra de Objeto de Negócios

Seguindo o exemplo da Subconsulta, iremos unir o Cliente (Grupo por Subconsulta) à tabela Cliente e estabelecer uma junção utilizando o campo chave comum entre os dois objetos, que neste cenário é CustomerID.

Visualização da aba Tabelas:

publishuilayer.png

Visualização da aba SQL:

SELECT 
       C.CustomerID AS CustomerID,
       C.ProductName AS ProductName,
       C.OrderDate AS OrderDate
 FROM     
       "Customer (Group By Subquery)" AS CGBS 
           INNER JOIN  
       Customer AS C ON 
       ( (CGBS.CustomerID = C.CustomerID ) )