Pular para o conteúdo
  • Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 12 anos atrás por Avatar de rmanrman.
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #104755
    Avatar de Marcio RodriguesMarcio Rodrigues
    Participante

      Não estou conseguindo buscar o ultimo valor do custo médio (g.vl_custo_medio),
      Gostaria que alguém me ajudasse nesta questão, pois sei que tem uma sintaxe (MAX) mas não consegui utilizar a mesma.

      select distinct
      c.cd_atendimento atendimento,
      d.nm_paciente paciente,
      b.cd_pro_fat procedimento,
      e.ds_pro_fat ds_profat,
      b.dt_lancamento data,
      to_char (b.vl_unitario,’9,9999.99′) valor_fat,
      b.qt_lancamento qnt,
      g.vl_custo_medio,
      g.dt_custo

      from reg_fat a,itreg_fat b,atendime c,paciente d,pro_fat e,produto f,custo_medio g

      where a.cd_reg_fat=b.cd_reg_fat
      and c.cd_atendimento=a.cd_atendimento
      and d.cd_paciente=c.cd_paciente
      and e.cd_pro_fat=b.cd_pro_fat
      and f.cd_produto=g.cd_produto
      and f.cd_pro_fat=b.cd_pro_fat(+)
      and c.cd_atendimento=’260617′
      and b.cd_pro_fat=’08019208′

      #104756
      Avatar de Marcio RodriguesMarcio Rodrigues
      Participante

        Coloquei a sintaxe (MAX), mas ainda retorna erro, como realizar esta consulta?

        select distinct
        c.cd_atendimento atendimento,
        d.nm_paciente paciente,
        b.cd_pro_fat procedimento,
        e.ds_pro_fat ds_profat,
        b.dt_lancamento data,
        to_char (b.vl_unitario,’9,9999.99′) valor_fat,
        b.qt_lancamento qnt

        from reg_fat a,itreg_fat b,atendime c,paciente d,pro_fat e,produto f,custo_medio g

        (select custo.vl_custo_medio=max(custo.dt_custo)
        from custo_medio custo where custo.cd_produto = g.cd_produto group by custo.vl_custo_medio) custo

        where a.cd_reg_fat=b.cd_reg_fat
        and c.cd_atendimento=a.cd_atendimento
        and d.cd_paciente=c.cd_paciente
        and e.cd_pro_fat=b.cd_pro_fat
        and f.cd_produto=g.cd_produto
        and f.cd_pro_fat=b.cd_pro_fat(+)
        and c.cd_atendimento=’260617′
        and b.cd_pro_fat=’08019208′

        #104757
        Avatar de rmanrman
        Participante

          @marciommr

          O exemplo a seguir retorna o maior preço de um produto da categoria 1


          CREATE TABLE PRECOS(
          ID NUMBER
          ,PRODUTO_ID NUMBER
          ,CATEGORIA_ID NUMBER
          ,PRECO NUMBER(8,2)
          );

          INSERT INTO PRECOS(ID,PRODUTO_ID,CATEGORIA_ID,PRECO) VALUES(1,1,1,5.8);
          INSERT INTO PRECOS(ID,PRODUTO_ID,CATEGORIA_ID,PRECO) VALUES(2,2,1,199.99);
          INSERT INTO PRECOS(ID,PRODUTO_ID,CATEGORIA_ID,PRECO) VALUES(3,3,2,10);

          COMMIT;

          SELECT CATEGORIA_ID,MAX(PRECO)
          FROM PRECOS
          WHERE CATEGORIA_ID = 1
          GROUP BY CATEGORIA_ID;

          #104758
          Avatar de Marcio RodriguesMarcio Rodrigues
          Participante

            Caro Rman,
            Na verdade eu preciso que traga o preço da ultima dada da tabela custo_medio para cada produto.
            Retornar o preço da maior data por produto.
            Abraço e grato.

            #104759
            Avatar de rmanrman
            Participante

              @marciommr

              Veja se você consegue pegar a ideia, estou considerando que existe apenas 1 custo medio por data para cada produto.


              CREATE TABLE CUSTOS(
              ID NUMBER
              ,PRODUTO_ID NUMBER
              ,CUSTOMEDIO NUMBER(8,2)
              ,DATACUSTO DATE
              );

              INSERT INTO CUSTOS(ID,PRODUTO_ID,CUSTOMEDIO,DATACUSTO) VALUES(1,1,2.5,'2012-11-01');
              INSERT INTO CUSTOS(ID,PRODUTO_ID,CUSTOMEDIO,DATACUSTO) VALUES(2,1,2,'2012-11-07');
              INSERT INTO CUSTOS(ID,PRODUTO_ID,CUSTOMEDIO,DATACUSTO) VALUES(3,2,5.75,'2012-11-02');
              INSERT INTO CUSTOS(ID,PRODUTO_ID,CUSTOMEDIO,DATACUSTO) VALUES(3,2,6,'2012-11-06');

              COMMIT;

              SELECT ID,PRODUTO_ID,CUSTOMEDIO
              FROM CUSTO MASTER
              WHERE (MASTER.PRODUTO_ID,MASTER.DATACUSTO) IN(
              SELECT DETAIL.PRODUTO_ID,MAX(DETAIL.DATACUSTO)
              FROM CUSTOS DETAIL
              GROUP BY DETAIL.PRODUTO_ID
              )

              #104760
              Avatar de Marcio RodriguesMarcio Rodrigues
              Participante

                Não deu muito certo.
                Mas eu modifiquei a query, agora está dando apenas este erro.

                ORA-00907 missing right parenthesis
                Cause: A left parenthesis has been entered without a closing right parenthesis, or extra information was contained in the parentheses. All parentheses must be entered in pairs.
                Action: Correct the syntax and retry the statement.


                select distinct
                c.cd_atendimento atendimento,
                d.nm_paciente paciente,
                b.cd_pro_fat procedimento,
                e.ds_pro_fat ds_profat,
                b.dt_lancamento data,
                to_char (b.vl_unitario,’9,9999.99′) valor_fat,
                b.qt_lancamento qnt

                from reg_fat a,itreg_fat b,atendime c,paciente d,pro_fat e,produto f,custo_medio g,
                (
                select *
                from custo_medio cm
                where cm.dh_custo_medio in (select max(cm.dh_custo_medio) from custo_medio a where a.cd_produto = cm.cd_produto )

                where a.cd_reg_fat=b.cd_reg_fat
                and c.cd_atendimento=a.cd_atendimento
                and d.cd_paciente=c.cd_paciente
                and e.cd_pro_fat=b.cd_pro_fat
                and f.cd_produto=g.cd_produto
                and f.cd_pro_fat=b.cd_pro_fat(+)
                and c.cd_atendimento=’260617′
                and b.cd_pro_fat=’08019208′

                #104761
                Avatar de rmanrman
                Participante

                  @marciommr

                  Faltou fechar um parenteses:


                  select distinct
                  c.cd_atendimento atendimento,
                  d.nm_paciente paciente,
                  b.cd_pro_fat procedimento,
                  e.ds_pro_fat ds_profat,
                  b.dt_lancamento data,
                  to_char (b.vl_unitario,'9,9999.99') valor_fat,
                  b.qt_lancamento qnt

                  from reg_fat a,itreg_fat b,atendime c,paciente d,pro_fat e,produto f,custo_medio g,
                  (
                  select *
                  from custo_medio cm
                  where cm.dh_custo_medio in (select max(cm.dh_custo_medio) from custo_medio a where a.cd_produto = cm.cd_produto )
                  )

                  where a.cd_reg_fat=b.cd_reg_fat
                  and c.cd_atendimento=a.cd_atendimento
                  and d.cd_paciente=c.cd_paciente
                  and e.cd_pro_fat=b.cd_pro_fat
                  and f.cd_produto=g.cd_produto
                  and f.cd_pro_fat=b.cd_pro_fat(+)
                  and c.cd_atendimento='260617'
                  and b.cd_pro_fat='08019208'

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