Agregar e classificar dados em uma consulta

Concluído(a)

Em uma consulta, você pode usar método totals para fazer um cálculo em uma coluna e retornar o valor calculado no conjunto de dados resultante. Esse cálculo é geralmente chamado de agregação.

Normalmente, usamos agregações com agrupamento para encontrar os totais de grupos de colunas especificados. Por exemplo, você pode somar os valores no campo Valor de cada Conta contábil na tabela entrada de contabilidade ou encontrar a Quantidade média por item na tabela entrada do razão do item. Os métodos de totais nas consultas do Business Central correspondem diretamente às funções agregadas do SQL Server.

É possível usar os seguintes métodos de totais para concluir tarefas específicas:

  • Sum: calcula o total dos valores da coluna especificada de todos os registros que são agrupados no conjunto de dados.

  • Average: calcula o valor médio na coluna especificada de um grupo.

  • Min: recupera o valor mais baixo da coluna especificada em um grupo.

  • Max: recupera o valor mais alto da coluna especificada em um grupo.

  • Count: retorna o número de registros de tabelas de itens de dados que representam um grupo no conjunto de dados.

O exemplo de código a seguir mostra como o método Sum é usado na propriedade Method do campo Qty. (Base).

query 7345 "Avail Qty. (Base) In QC Bins"
{
    Caption = 'Avail Qty. (Base) In QC Bins';

    elements
    {
        dataitem(Location; Location)
        {
            DataItemTableFilter = "Directed Put-away and Pick" = const(true);
            dataitem(Warehouse_Entry; "Warehouse Entry")
            {
                DataItemLink = "Location Code" = Location.Code;
                SqlJoinType = InnerJoin;
                ...
                column(Sum_Qty_Base; "Qty. (Base)")
                {
                    ColumnFilter = Sum_Qty_Base = filter(> 0);
                    Method = Sum;
                }
                ...
            }
        }
    }
}

Você pode classificar os dados em um conjunto de dados de uma consulta por qualquer número de colunas contida na consulta. Para estabelecer a ordem, defina a propriedade OrderBy na consulta. Para classificar várias colunas, separe-as com vírgulas.

query 7345 "Avail Qty. (Base) In QC Bins"
{
    Caption = 'Avail Qty. (Base) In QC Bins';
    OrderBy = descending(Sum_Qty_Base);
    ...
}

Não é possível classificar por uma coluna que não está presente no conjunto de dados resultante. Se você quiser classificar por tal coluna, primeiro adicione-a ao modelo de consulta e, depois, inclua-a na propriedade OrderBy.

Ao recuperar os campos Date ou DateTime de um banco de dados do Dynamics Business Central, você pode recuperar somente o ano, o mês ou o dia, em vez da data inteira. Isso é especialmente verdadeiro quando você agrupa e totaliza os dados. Por exemplo, você pode agrupar a receita por cliente e por ano ou encontrar o consumo médio de um componente da BOM de produção por mês. Você pode obter essa tarefa selecionando um método Date ou DateTime na consulta.

Os métodos de dados incluem:

  • Dia

  • Mês

  • Ano

Quando você usa o SQL Server, os valores de data e hora são processados usando o Tempo Universal Coordenado (UTC). Se uma solução do Business Central usar um fuso horário diferente de UTC, e o campo em que você aplicar o método de data tiver um tipo de dados DateTime, pode haver uma diferença entre o valor de data retornado no conjunto de dados do campo e o dia, o mês ou o ano real do campo na tabela. Essa situação ocorre quando a data UTC correspondente de um campo cai no dia seguinte ou no dia anterior por causa da hora do dia e do fuso horário do Business Central.

As diferenças no dia, mês ou ano ocorrem quando os valores de data e hora são recuperados da tabela do banco de dados do Business Central. Esses valores são convertidos das configurações regionais da solução do Business Central para data e hora UTC. O dia, mês ou ano é calculado no SQL Server e, então, retornado ao conjunto de consulta como um valor inteiro. Esse inteiro não considera as configurações regionais de uma solução do Business Central.

Para evitar essa condição, use o método Date em campos que têm um tipo de dados Date em vez de um tipo de dados DateTime, quando possível. Você também pode retornar o valor DateTime e implementar o pós-processamento para o dia, o mês e o ano, conforme necessário.