AJUDA COM UM SELECT..

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

AJUDA COM UM SELECT..

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#497095 - 28/05/2021 18:11:23

FERDEAD
LIMEIRA
Cadast. em:Outubro/2004


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?



#497097 - 28/05/2021 18:31:39

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Última edição em 28/05/2021 18:32:18 por NOWLIGHTS

  SELECT * FROM Tabela WHERE (Vencimento BETWEEN '2021-05-01 00:00:00' AND '2021-05-31 23:59:59'


Acredito que assim de, se sua tabela Vencimento for do tipo datetime, a data vc manipula do jeito que quiser


__________________________________
- Everyone has a chance


#497098 - 28/05/2021 18:39:12

FERDEAD
LIMEIRA
Cadast. em:Outubro/2004


dessa forma não vai agrupar do jeito que eu preciso..

a saída teria que ser assim:

Mês/Ano - Valor Pago - Valor Aberto
Abril/2021 - 5000 - 0,00
Maio/2021 - 3000 - 2000
Junho/2021 - 0 - 5000
Julho/2021 - 0 - 5000





#497101 - 28/05/2021 23:14:03

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Tente assim:



declare @tabela table (data_vencimento datetime, valor_a_pagar money, valor_pago money)


insert into @tabela
values
    ('2021-06-05', 100, 50),
    ('2021-06-09', 200, 150),
    ('2021-06-15', 300, 250),
    ('2021-06-25', 400, 350),
    ('2021-07-05', 1000, 500),
    ('2021-07-09', 2000, 1050),
    ('2021-07-15', 3000, 2050),
    ('2021-07-25', 4000, 3050)





-- só essa parte é necessária pra você, o resto foi apenas para simular alguns dados
select
    sum(valor_a_pagar)    valor_total_a_pagar,
    sum(valor_pago)        valor_total_pago,
    cast(month(data_vencimento) as varchar) + '/' + cast(year(data_vencimento) as varchar)    mes_ano
from
    @tabela
group by
    year(data_vencimento), month(data_vencimento)





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


#497105 - 29/05/2021 12:01:41

FERDEAD
LIMEIRA
Cadast. em:Outubro/2004


ainda não é bem assim...

eu não tenho na minha tabela um campo, 'valor pago' e 'falta pagar'.. eu tenho um campo 'valor' e um booleano de 'pago'..

então, teria que fazer um filtro ai no 'pago' para obter o valor pago e o que falta pagar por mês..



#497106 - 29/05/2021 13:17:15

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


 Anexos estao visíveis somente para usuários registrados

Seria tipo isso no gráfico
No gráfico assim mostro tudo  de vendas recebidas agrupado por mês e despesas, mas também posso mostrar por dias semanas ou anos seria esse tipo de agrupamento pelo sql?



#497112 - 29/05/2021 15:04:48

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Citação:
ainda não é bem assim...



É a mesma ideia. Única diferença é que você precisaria colocar um Case When ali no SUM. Se o valor o booleano estiver como Pago, você soma na coluna de valor pago. Se o valor estiver como não-pago, você soma na coluna de valor a pagar.


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


#497113 - 29/05/2021 16:17:08

AMORIM
PALMAS/TOCANTINS
Cadast. em:Agosto/2015


Última edição em 29/05/2021 16:19:04 por AMORIM

  
Amigo vai ficar mais ou menos a assim

    Private Leitor1 As OleDbDataReader
    Dim Dinheiro As Double
    Dim VendaDinheiro As Double
    Dim TotalVendasDinheiro As Double
    Dim RecebimentoDinheiro As Double
    Dim TotalRecebimentoDinheiro As Double
  Private Sub Lista_Receb_Dinheiro()
        Dim agora As Date = Now.ToString('dd/MM/yyyy')
        Using con As OleDbConnection = GetConnection()
            Try
                Dim SQL1 As String = ''
                SQL1 = 'SELECT VALORAPAGAR FROM A SUA TABELA WHERE DateValue(DATAVENC) >= DateValue('' & agora.AddMonths(+1) & '') AND DateValue(DATAVENC) <= DateValue('' & agora.AddMonths(+1) & '')'
                con.Open()
                Dim MyComand1 As New OleDbCommand(SQL1, con)
                Leitor1 = MyComand1.ExecuteReader()
                While Leitor1.Read()
                    RecebimentoDinheiro = Leitor1.GetDecimal(0)
                    TotalRecebimentoDinheiro = TotalRecebimentoDinheiro + RecebimentoDinheiro
                End While
            Catch ex As Exception
                MsgBox(ex.Message) '
            Finally
                con.Close()
                Leitor1.Close()
            End Try
        End Using
        TextBox1.Text = Format(Val(TotalRecebimentoDinheiro), '##,##0.00')
        TotalRecebimentoDinheiro = Nothing
    End Sub





#497114 - 29/05/2021 16:27:05

FERDEAD
LIMEIRA
Cadast. em:Outubro/2004


Citação:
:
ainda não é bem assim...



É a mesma ideia. Única diferença é que você precisaria colocar um Case When ali no SUM. Se o valor o booleano estiver como Pago, você soma na coluna de valor pago. Se o valor estiver como não-pago, você soma na coluna de valor a pagar.


teria um exemplo do código pra eu testar aqui?



#497115 - 29/05/2021 16:30:21

FERDEAD
LIMEIRA
Cadast. em:Outubro/2004


Citação:
:
  
Amigo vai ficar mais ou menos a assim

    Private Leitor1 As OleDbDataReader
    Dim Dinheiro As Double
    Dim VendaDinheiro As Double
    Dim TotalVendasDinheiro As Double
    Dim RecebimentoDinheiro As Double
    Dim TotalRecebimentoDinheiro As Double
  Private Sub Lista_Receb_Dinheiro()
        Dim agora As Date = Now.ToString('dd/MM/yyyy')
        Using con As OleDbConnection = GetConnection()
            Try
                Dim SQL1 As String = ''
                SQL1 = 'SELECT VALORAPAGAR FROM A SUA TABELA WHERE DateValue(DATAVENC) >= DateValue('' & agora.AddMonths(+1) & '') AND DateValue(DATAVENC) <= DateValue('' & agora.AddMonths(+1) & '')'
                con.Open()
                Dim MyComand1 As New OleDbCommand(SQL1, con)
                Leitor1 = MyComand1.ExecuteReader()
                While Leitor1.Read()
                    RecebimentoDinheiro = Leitor1.GetDecimal(0)
                    TotalRecebimentoDinheiro = TotalRecebimentoDinheiro + RecebimentoDinheiro
                End While
            Catch ex As Exception
                MsgBox(ex.Message) '
            Finally
                con.Close()
                Leitor1.Close()
            End Try
        End Using
        TextBox1.Text = Format(Val(TotalRecebimentoDinheiro), '##,##0.00')
        TotalRecebimentoDinheiro = Nothing
    End Sub



eu gostaria de montar isso no próprio MySQL.. se não for possível, ai sim acho que precisarei utilizar algo assim...



#497119 - 30/05/2021 01:23:40

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


Última edição em 30/05/2021 01:24:46 por FABRICIOWEB

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());
                    }
                }




 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