AJUDA COM UM SELECT..

 Tópico anterior Próximo tópico Novo tópico

AJUDA COM UM SELECT..

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#497120 - 30/05/2021 01:25:47

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


tem erros  de caracteres o site



#497126 - 30/05/2021 23:33:23

FERDEAD
LIMEIRA
Cadast. em:Outubro/2004


Citação:
:
:
olá pessoal..

tenho uma tabela contas a pagar com os campos ex.:

id-descrição-valor-vencimento-pago

eu queria pegar as contas que estão vencendo nos próximos meses e agrupar por mês, para eu saber em janeiro tem X para pagar, fevereiro tem Y..

como ficaria esse select?
Não tenho certeza

string idescricao='';
                double valordespesa = 0;

                //id-descrição-valor-vencimento-pago

                MySqlConnection Conecta = Conexaolocal.ObtenerConexion();
                MySqlCommand Consulta = new MySqlCommand();
                Consulta.Connection = Conecta;


                // agrupa por mes
                Consulta.CommandText = 'SELECT vencimento, SUM(IF(id-descrição=@id, replace(valor,',','.'), 0)) as 'despesatotal' FROM contasapagar GROUP BY YEAR(vencimento), month(vencimento)';


              //  agrupa por dias selecionados
              Consulta.CommandText = 'SELECT vencimento, SUM(IF(id-descrição=@id, replace(valor,',','.'), 0)) as 'despesatotal' FROM contasapagar WHERE vencimento BETWEEN @dtain AND @dtafin AND pago=@pago GROUP BY day(vencimento),month(vencimento)';
          

                Consulta.Parameters.AddWithValue('@dtain', '' +  Convert.ToString(dtain) + '');
                Consulta.Parameters.AddWithValue('@dtafin', '' + Convert.ToString(dtafin) + '');
                Consulta.Parameters.AddWithValue('@id', '' + idescricao + '');
                Consulta.Parameters.AddWithValue('@pago', '' +   Convert.ToBoolean('SIM') + '');
                MySqlDataReader Resultado = Consulta.ExecuteReader();
          
                if (Resultado.HasRows) // Se encontrar algum registro
                {
                    while (Resultado.Read())
                    {
            
                        valordespesa += Convert.ToDouble(Resultado['despesatotal'].ToString());
                    }
                }



gostaria de fazer com o MySQL... será que é possível ou só no vb mesmo? hehe



#497139 - 31/05/2021 23:11:19

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Segue o que eu havia comentado usando o CASE WHEN... agora versão MySQL


CREATE TEMPORARY TABLE tabela_teste (
    data_vencimento datetime,
    valor decimal(6,2),
    pago BIT
);


insert into tabela_teste
values
    ('2021-06-05', 100, 1),
    ('2021-06-09', 200, 0),
    ('2021-06-15', 300, 1),
    ('2021-06-25', 400, 0),
    ('2021-07-05', 1000, 1),
    ('2021-07-09', 2000, 0),
    ('2021-07-15', 3000, 1),
    ('2021-07-25', 4000, 0);




-- só essa parte é necessária pra você, o resto foi apenas para simular alguns dados
select
     sum(case when pago = 0 THEN valor ELSE 0 END)        valor_total_a_pagar,
     sum(case when pago = 1 THEN valor ELSE 0 END)       valor_total_pago,
     Concat(cast(month(data_vencimento) as char), '/', cast(year(data_vencimento) as char)) mes_ano
from
    tabela_teste
group by
    year(data_vencimento), month(data_vencimento);
    
    
DROP TEMPORARY TABLE tabela_teste



Não nasci pra programar, mas preciso me alimentar...


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário