Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como retornar o valor da ultima data

Amigos, bom dia

Me ajudem, imagina que eu tenho uma tabela de vendas chamada VENDAS_ANALITICAS e ela mostra todas as informações da venda, incluindo as informações do cupom fiscal.

As colunas importante pra mim são:

MOVIMENTO(DATA), EMPRESA, PRODUTO, VALOR_BRUTO, DESCONTOS, VALOR_LIQUIDO.

Eu preciso retornar sempre a ultima venda de cada produto. Por exemplo se eu quiser filtrar por DIPIRONA, ele sempre vai me retornar a ultima venda de dipirona feita em cada empresa.

Temos 3 empresas, preciso que a seleção seja feita distintas entre elas. A ultima venda de dipirona na empresa1, empresa2 e empresa3.

Como eu faço essa query via SQL Server?

Eu imagino algo mais ou menos assim:

SELECT DISTINCT TOP 3

    MAX(MOVIMENTO) AS DATA
    ,EMPRESA
    ,PRODUTO
    ,VALOR_BRUTO
    ,DESCONTO
    ,VALOR_LIQUIDO
    
FROM VENDAS_ANALITICAS
GROUP BY

    EMPRESA
    ,PRODUTO
    ,VALOR_BRUTO
    ,DESCONTO
    ,VALOR_LIQUIDO

Agradeço, sou novo na plataforma e na programação.

Att, Ewerton Willian

1 resposta
solução!

Olá Ewerton, tudo bem?

Para retornar a última venda de cada produto em cada empresa, você pode utilizar a função de janela ROW_NUMBER() em conjunto com uma subconsulta, utilizando o OVER . Seria algo como:

SELECT *
FROM (
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY EMPRESA, PRODUTO ORDER BY MOVIMENTO DESC) AS rn
    FROM VENDAS_ANALITICAS
) AS sub
WHERE rn = 1;

Acima, a função ROW_NUMBER() é usada para atribuir um número de linha para cada venda, agrupando por empresa e produto e ordenando por data de movimento em ordem decrescente. Em seguida, a subconsulta seleciona apenas as linhas com rn = 1, ou seja, a última venda de cada produto em cada empresa.

Abaixo deixo link da documentação para consulta. Elas estão em inglês, mas você poderá utilizar o tradutor automático do navegador:

Espero ter ajudado.

Caso surja alguma dúvida, é só compartilhar no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!