How to set up a query to bring the last value up based on month and year?

0
SELECT DadosFinanceirosFiliado_Valor,
       Filiados_Filiado_Id,
       DadosFinanceirosFiliado_CompetenciaMes,
       DadosFinanceirosFiliado_CompetenciaAno
  FROM dadosfinanceirosfiliado t
 INNER JOIN filiados
    ON dadosfinanceirosfiliado.Filiados_Filiado_Id = filiados.Filiado_Id
 WHERE t.DadosFinanceirosFiliado_Valor(SELECT Filiados_Filiado_Id 
                                         FROM dadosfinanceirosfiliado 
                                        WHERE DadosFinanceirosFiliado_Valor = t.DadosFinanceirosFiliado_Valor 
                                        ORDER BY DadosFinanceirosFiliado_CompetenciaMes, DadosFinanceirosFiliado_CompetenciaAno DESC LIMIT 0, 1)

I'm having difficulty setting up my query, I wanted to know how to set a select to bring the last value of a table based on month and year (the maximum I could get was sql shown above).

Table where the query happens:

    
asked by anonymous 18.12.2018 / 13:31

2 answers

0

Since the query shown in the question is correct regarding the relationship between fields, you can concatenate ( concat () ) year and month and to make a descending order of this result (ex 201812 , 201801 ), limiting the return in one, that is, taking only the highest value; type like this:

SELECT DadosFinanceirosFiliado_Valor, Filiados_Filiado_Id, DadosFinanceirosFiliado_CompetenciaMes, DadosFinanceirosFiliado_CompetenciaAno
FROM dadosfinanceirosfiliado t
INNER JOIN filiados f ON t.Filiados_Filiado_Id = f.Filiado_Id
ORDER BY CONCAT(DadosFinanceirosFiliado_CompetenciaAno, DadosFinanceirosFiliado_CompetenciaMes) DESC LIMIT 1

edited

According to comments, the idea is to bring the last value of each Filiados_Filiado_Id ; so you will need to add a subquery for filtering per affiliate. For this, the field of id of the tables (I believe they have an identifier, you just need to validate the name of that field):

SELECT DadosFinanceirosFiliado_Valor, Filiados_Filiado_Id, DadosFinanceirosFiliado_CompetenciaMes, DadosFinanceirosFiliado_CompetenciaAno
FROM dadosfinanceirosfiliado t
INNER JOIN filiados f ON t.Filiados_Filiado_Id = f.Filiado_Id
WHERE f.id in (SELECT f2.id
               FROM filiados f2
               WHERE f2.Filiado_Id = f.Filiado_Id
               ORDER BY CONCAT(DadosFinanceirosFiliado_CompetenciaAno, DadosFinanceirosFiliado_CompetenciaMes) DESC LIMIT 1)
    
18.12.2018 / 13:58
-1
SELECT MAX(DadosFinanceirosFiliado_Valor), MAX(DadosFinanceirosFiliado_CompetenciaMes), DadosFinanceirosFiliado_CompetenciaAno FROM dadosfinanceirosfiliado WHERE Filiados_Filiado_Id = {define aqui o id do filiado que você precisa} GROUP BY DadosFinanceirosFiliado_CompetenciaAno
    
18.12.2018 / 21:10