Agrupa os dados de uma query
Exemplo da Rotina:
SELECT [Colunas] FROM [Tabela] GROUP BY [Colunas]
Exemplo 1- Com contagem de dados:
SELECT BM_GRUPO, BM_DESC, COUNT(B1_COD) AS TOT_PRODUTOS FROM SBM010 SBM INNER JOIN SB1010 SB1 ON ( B1_FILIAL = ' ' AND B1_GRUPO = BM_GRUPO AND SB1.D_E_L_E_T_ = ' ' ) WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' GROUP BY BM_GRUPO, BM_DESC ORDER BY BM_GRUPO
Exemplo 2- Com contagem e soma de dados:
SELECT BM_GRUPO, BM_DESC, COUNT(B1_COD) AS TOT_PRODUTOS, SUM(B1_PESO) AS PESO_TOTAL FROM SBM010 SBM INNER JOIN SB1010 SB1 ON ( B1_FILIAL = ' ' AND B1_GRUPO = BM_GRUPO AND SB1.D_E_L_E_T_ = ' ' ) WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' GROUP BY BM_GRUPO, BM_DESC ORDER BY BM_GRUPO
Exemplo 3- Com subquery de dados:
SELECT BM_GRUPO, BM_DESC, COUNT(B1_COD) AS TOT_PRODUTOS, SUM(B1_PESO) AS PESO_TOTAL, ( SELECT COUNT(SB1A.B1_COD) FROM SB1010 SB1A WHERE SB1A.B1_FILIAL = ' ' AND SB1A.B1_GRUPO = SBM.BM_GRUPO AND SB1A.B1_TIPO = 'PA' AND SB1A.D_E_L_E_T_ = ' ' ) AS TOT_PRODUTOS_ACABADOS FROM SBM010 SBM INNER JOIN SB1010 SB1 ON ( B1_FILIAL = ' ' AND B1_GRUPO = BM_GRUPO AND SB1.D_E_L_E_T_ = ' ' ) WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' GROUP BY BM_GRUPO, BM_DESC ORDER BY BM_GRUPO
Exemplo 4- Com case when de dados:
SELECT BM_GRUPO, BM_DESC, COUNT(B1_COD) AS TOT_PRODUTOS, SUM(B1_PESO) AS PESO_TOTAL, SUM( CASE WHEN B1_TIPO = 'PA' THEN 1 ELSE 0 END ) AS TOT_PRODUTOS_ACABADOS FROM SBM010 SBM INNER JOIN SB1010 SB1 ON ( B1_FILIAL = ' ' AND B1_GRUPO = BM_GRUPO AND SB1.D_E_L_E_T_ = ' ' ) WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' GROUP BY BM_GRUPO, BM_DESC ORDER BY BM_GRUPO
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;