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;