Subconsultas

1 resposta
mysql
H

Senhores estou há algum tempo tentando sem sucesso.

tenho uma tabela com os campos cnpj, fatura e competência(data).

preciso de uma consulta que relacione as três últimas faturas de cada cliente.

tentei com join ou subconsultas mas não consigo retornar o resultado que desejo

esta consulta retorna todas as faturas de cada cliente, mas quando tento limitar as três ultima pelo critério de data só retorna 3 linhas

SELECT faturas.fatura, faturas.cnpj, faturas.Competencia

FROM faturas

WHERE (((faturas.cnpj) In (select cnpj from faturas)))

ORDER BY faturas.Competencia DESC;

1 Resposta

pmlm

Em Oracle seria assim

select * From (
    SELECT cnpj, fatura, rank () over(partition by cnpj order by fatura desc) as rank 
      FROM faturas 
     group by cnpj, fatura
) where rank < 4

Em mysql penso que não tens diretamente a função rank mas podes pesquisar como usar um rank em mysql.

Criado 11 de outubro de 2018
Ultima resposta 12 de out. de 2018
Respostas 1
Participantes 2