- Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 12 anos atrás por rman.
-
AutorPosts
-
7 de novembro de 2012 às 12:01 am #104755Marcio RodriguesParticipante
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_custofrom 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′7 de novembro de 2012 às 3:16 pm #104756Marcio RodriguesParticipanteColoquei 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 qntfrom 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) custowhere 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′7 de novembro de 2012 às 3:45 pm #104757rmanParticipante@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;
7 de novembro de 2012 às 9:32 pm #104758Marcio RodriguesParticipanteCaro 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.7 de novembro de 2012 às 10:49 pm #104759rmanParticipante@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
)
8 de novembro de 2012 às 6:53 pm #104760Marcio RodriguesParticipanteNã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 qntfrom 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′8 de novembro de 2012 às 7:09 pm #104761rmanParticipante@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 qntfrom 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'
-
AutorPosts
- Você deve fazer login para responder a este tópico.