Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 11 anos, 5 meses atrás por Avatar de fabio segatofabio segato.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #105591
    Avatar de NeskenNesken
    Participante

      Olá pessoal sou novato no forum, venho aqui em busca de ajuda, já procurei bastente e se for algo simples, por favor me desculpem.

      abaixo uma simples select
      select sum(valor) valor1, sum(valor) valor2 from venda where data_venda = sysdate

      essa select retorna 2 campos iguais, já que somam as mesmas colunas usando o mesmo parâmetro.

      Minha dúvida: é possível que no campo valor 1 apareça a soma dos valores do dia dia hoje (sysdate), e no valor 2 apareça a soma do mês inteiro? Nao encontrei logica pra colocar isso depois do where..

      #105592
      Avatar de marlontkmarlontk
      Participante

        1º Cuidado quando se utiliza a comparação sysdate(data+time) ela sempre representa a data atual.

        Segue sugestões para o sql

        1)
        select sum(valor) valor1,
        sum(select valor from venda b where to_char(b.data_venda,’mm/yyyy’) = to_char(sysdate,’mm/yyyy’)) valor2
        from venda v
        where trunc(data_venda) = trunc(sysdate)

        2)
        select sum(case when trunc(data_venda) = trunc(sysdate) then valor else 0 end) valor1,
        sum(valor) valor2
        from venda v
        where to_char(b.data_venda,’mm/yyyy’) = to_char(sysdate,’mm/yyyy’)

        3)
        select sum(case when trunc(data_venda) = trunc(sysdate) then valor else 0 end) valor1,
        sum(valor) valor2
        from venda v
        where trunc(b.data_venda) = between to_date(’01/’||to_char(sysdate,’mm/yyyy’),’dd/mm/yyyy’) and last_day(trunc(sysdate))

        Em sql muitas coisas são possíveis de se fazer de maneiras diferentes.

        Neste teu caso cuidar o sql para ver a questão de uso de índice essas operações de conversão de data não utiliza índice se criado sem a aplicação deste no índice.

        Não executei os sqls então pode ter algum detalhe de sintaxe que apresente erro, espero que ajude.

        #105593
        Avatar de fabio segatofabio segato
        Participante

          Só uma sugestão

          Invés de utulizar esse tipo de concatenação to_date(’01/’||to_char(sysdate,’mm/yyyy’),’dd/mm/yyyy’), utilize TRUNC(SYSDATE,’MM’)

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress