Pular para o conteúdo
Visualizando 15 posts - 1 até 15 (de 18 do total)
  • Autor
    Posts
  • #95712
    batofao
    Participante

      bom dia meus amigos,

      viu sera que eu consigo selecionar todas as datas de um ano, por exempo
      com o select :
      SELECT LAST_DAY(TO_DATE(’01/’||ROWNUM||’/2009′,’DD/MM/YYYY’))
      FROM (tabela )
      WHERE ROWNUM <= 12 and o problema é que no from eu queria colocar alguma tabela que retorne todos os dias do ano conseguentemente o select retornaria os ultimos dias de cada mes... obrigado

      #95715
      burga
      Participante

        Isso que você quer?

        select
        to_date('01/01/2010')+level-1
        from dual
        connect by
        to_date('01/01/2010')+level-1
        <= last_day(to_date('01/12/2010'));

        #95716
        batofao
        Participante

          é sim, dai tenho uma tabela chamada calendario que esta os sabados e domingos e feriados, não sei como faço para achar o ultimo dia ultil de cada mes levando em consideração que a data não pode estar na tabela de feriado….

          #95717
          burga
          Participante

            Um dos caminhos é:

            primeiro você pega o select postado anteriormente e faz
            MINUS
            select das datas da sua tabela de feriado (calendario)

            Feito isto, coloca tudo em uma cláusula from e seleciona o MAX(data) agrupando por mês.

            #95719
            batofao
            Participante

              seria mais ou menos isso:

              select
              to_date(’01/01/2010′)+level-1
              from dual
              connect by
              to_date(’01/01/2010′)+level-1
              <= last_day(to_date('01/12/2010'))
              MINUS select * from feriados_internacionais

              pq não deu certo…

              obg..

              #95720
              batofao
              Participante

                opa consegui deu certo sim.. muito obrigado.. só mais uma duvida como que eu dou max date de cada mes especifico…

                obg….

                #95721
                burga
                Participante

                  pega todo o select que você já montou e faz:

                  select max(sua_data)
                  from
                  ( o select que você montou )
                  group by
                  to_char(sua_data,'MM');

                  O sua_data seria a coluna de data que sobrou da diferença dos dois selects (dias do ano – dias não uteis). Você pode colocar um álias nela pra facilitar…

                  #95722
                  batofao
                  Participante

                    entendi tudo mas me descupe a ignorancia é que depois que eu tenho o resultado eu não sei qual o nome do campo pq foi aquela rotina que criou minhas datas, ai que campo que eu coloco no max?

                    obs

                    no resultado ele me aparece assim:

                    TO_DATE(’01/01/2010)+LEVEL-1 –é esse campo mesmo que eu pecifico?
                    01/01/2010
                    02/01/2010

                    #95725
                    burga
                    Participante

                      Como disse no post anterior você pode utilizar um álias pra facilitar sua vida, o álias seria o apelido para o campo:

                      select
                      to_date('01/01/2010')+level-1 APELIDO
                      from dual
                      connect by
                      to_date('01/01/2010')+level-1
                      <= last_day(to_date('01/12/2010'))

                      MINUS

                      select data
                      from feriados_internacionais

                      note que logo depois da expressão de cálculo no select (to_date(’01/01/2010′)+level-1) eu cloquei um “apelido”, pode ser qualquer coisa.

                      Com isso, você pode chamar o campo pelo apelido no select externo…

                      #95726
                      batofao
                      Participante

                        DEU CERTO,

                        MUITO OBRIGADO. MAIS UMA VEZ

                        😀

                        #95744
                        batofao
                        Participante

                          ola,

                          me responda uma coisa, pq nessa consulta se eu coloco uma data por exmplo data inicial 01/03/2007 e final 02/02/2010 ele só me da os 12 meses de data…

                          obg

                          #95749
                          burga
                          Participante

                            Porque você está agrupando por mês… Você pode agrupar por mês e ano que ele vai retornar certo…

                            #95751
                            batofao
                            Participante

                              deu certo .. obrigado novamente.

                              #95758
                              batofao
                              Participante

                                não querendo abusar, mais surgiu a seguinte duvida?

                                eu ja tenho as datas que preciso (ultimos dias ulteis de cada mes)
                                agora junto com essas data eu tenho um valor, a duvida é a seguinte
                                por exemplo:

                                DATA Valor
                                28/05/10 10,150769
                                28/09/07 7,695931
                                30/09/09 9,591923
                                30/12/09 9,798184

                                onde o valor retornado por exemplo no dia 30/12 é ( valor / valor mes anterior -1)

                                30/12/09 (9,798184 / 9,591923 -1)

                                como aplico isso dentro dessa consulta..

                                obrigado

                                #95763
                                burga
                                Participante

                                  você pode usar uma subquery pra pegar o valor do mes anterior e jogar na sua conta…

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