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

      boa tarde,

      tenho uma consulta

      SELECT decode(g1,null,g2,g1),vg1,vg2,pm1,pm2
      FROM
      (SELECT VG.GRUPO g1, VG.POS_PERC vg1, VG.PERC_MARGINAL pm1 FROM VARS V , VAR_DEFINICOES VD, VAR_GRUPOS VG, ZXT_RES_FUNDOS ZX
      WHERE V.NOME_VAR = (ZX.ESTUDOS) AND zx.nome_cliente = :NOME_CLIENTE AND
      V.COD_VAR = VD.COD_VAR AND V.COD_VAR = VG.COD_VAR AND VD.DATA_COTACAO = (:data_inicial) ) MES1

      FULL OUTER JOIN
      (SELECT VG.GRUPO g2, VG.POS_PERC vg2, VG.PERC_MARGINAL pm2 FROM VARS V, VAR_DEFINICOES VD, VAR_GRUPOS VG, ZXT_RES_FUNDOS ZX
      WHERE V.NOME_VAR = (ZX.ESTUDOS) AND zx.nome_cliente = :NOME_CLIENTE AND
      V.COD_VAR = VD.COD_VAR AND V.COD_VAR = VG.COD_VAR AND VD.DATA_COTACAO = (:data_final) ) MES2
      ON MES1.g1 = MES2.g2
      ORDER BY PM2 DESC

      o que acontece, essa consulta me tras os dados de uma relatorio, só que por exemplo se o cliente tem 2 relatorios ele me traz os dados dos dois relatorios só que tudo misturado, eu precisava que ele rodasse o primeiro, me mostrasse os dados depois disso rodasse o segundo.. alguem tem uma dica comoposso fazer isso..

      obg

      #95882
      diegomello
      Participante

        Faz dois relatórios e chama um depois do outro.

        RUN_PRODUCT(... REP_A ...);
        RUN_PRODUCT(... REP_B ...);

        #95883
        batofao
        Participante

          não entendi como que consigo aplicar nesse caso

          obg,

          #95892
          burga
          Participante

            só que tudo misturado

            Se puder explicar melhor o que significa TUDO MISTURADO que você não quer que seja, com exemplo, facilitaria bastante a gente a te ajudar.

            rodasse o primeiro, me mostrasse os dados depois disso rodasse o segundo

            E também um exemplo de como deve ser o resultado que você espera…

            Eu imagino usar um
            row_number() over (partition by MES1.g1 order by PM2 DESC)
            na sua conuslta, e na primeira query apresentar quando o retorno disso é igual a 1 e na segunda igual a 2… Mas não sei se entendi direito o que você qur, por isso peço exemplos do que é o tudo misturado que está retornando e do que você deseja que retorne…

            #95897
            batofao
            Participante

              o que eu quero dizer com tudo misturado é o seguinte, aquele primeiro select me traz o resultado esperado de um determinado estudo, esse estudo tem um ‘nome’

              tenho uma outra tabela que server mais ou menos como um cadastro, que vai me indicar o nome do cliente e o nome do estudo que ele tem, se o cliente tem só um estudo blz, ele me traz os dados desse estudo, porem se o cliente tem mais de um estudo, ele me traz os dados do dois estudos só que ” todos o dados do 1 estudo e do segundo misturado”
              então preciso que ele me traga os dados do 1 estudo, depois os dados do segundo estudo…

              não sei se fui mais claro agora…

              obg.

              #95908
              burga
              Participante

                Deixa eu ver se entendi agora.

                No select você faz um full outer join entre outras duas consultas…

                Vou chutar que o nome do estudo deve estar nestas colunas V.NOME_VAR e (ZX.ESTUDOS).

                No FULL OUTER JOIN você apenas utiliza os grupos como atributo de comparação (MES1.g1 = MES2.g2). O correto, pra não misturar os estudos seria, em cada select você retornar também o V.NOME_VAR (nome do estudo) e usá-lo como atributo de comparação junto do grupo no FULL OUTER JOIN:

                SELECT VG.GRUPO g1, VG.POS_PERC vg1, VG.PERC_MARGINAL pm1, V.NOME_VAR nv1

                FULL OUTER JOIN
                SELECT VG.GRUPO g2, VG.POS_PERC vg2, VG.PERC_MARGINAL pm2, V.NOME_VAR nv2

                ON MES1.g1 = MES2.g2 AND MES1.nv1 = MES2.nv2
                ORDER BY PM2 DESC

                Seria isto?

                #95909
                batofao
                Participante

                  isso mesmo mesmo meu amigo, muito obrigado,

                  só mais uma duvida no final de cada relatorio tem como colocar um quebra de linha ou alguma coisa parecida…

                  do mais muito obrigado…

                  #95923
                  burga
                  Participante

                    Então, o que seria cada relatório? Porque pro meu entendimento, o retorno da sua consulta inteira seria apenas um relatório… Como seria esta divisão?

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