Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HilarYo

ERRO FUNÇÃO - Apresentar valor de um cliente num determinado mês

Recommended Posts

Boas tardes,

A seguinte função é suposto dar-me a soma do valor dos registos da tabela PAGAMENTO de um determinado cliente e num determinado mês/ano:

create or replace function T_PAGAMENTO_CLIENTE_ANO_MES(v_cliente IN NUMBER, v_mes_ano IN DATA)

return number is total number;

begin

select sum(PAGAMENTO.VALOR) 
into total
from PAGAMENTO
where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM'=to_char(v_mes_ano,'YYYY/MM');

return total;
end;

Esta dá erro nesta linha:

where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM'=to_char(v_mes_ano,'YYYY/MM');

e nesta:

 

select sum(PAGAMENTO.VALOR)

Alguém me consegue ajudar?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM') = to_char(v_mes_ano,'YYYY/MM');

Compartilhar este post


Link para o post
Compartilhar em outros sites
create or replace function T_PAGAMENTO_CLIENTE_ANO_MES(v_cliente IN NUMBER, v_mes_ano IN DATE)

return number is total number;

begin

select sum(PAGAMENTO.VALOR) 
into total
from PAGAMENTO
where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM') = to_char(v_mes_ano,'YYYY/MM');

return total;
end;

Já consegui resolver o erro, agora tenho outro problema:

 

 

SELECT T_PAGAMENTO_CLIENTE_ANO_MES ('2',TO_DATE('2014/02','YYYY/MM')) from dual;
Eu tenho registos na tabela PAGAMENTOS, cujo o ID_CLIENTE é 2 e o mês correspondente é 2, e não me faz a soma :(
Apenas aparecem registos se for o mes anterior, o corrente não :/
T_PAGAMENTO_CLIENTE_ANO_MES('2',TO_DATE('2014/02','YYYY/MM'))
-------------------------------------------------------------
                                                              

deveria de aparecer 75 porque o cliente tem 3 registos de 25 e somados da 75

:(

 

O exemplo que criei do mês passado funciona 3 registos de 30 = 90

1 rows inserted.
1 rows inserted.
1 rows inserted.
T_PAGAMENTO_CLIENTE_ANO_MES('2',TO_DATE('2014/01','YYYY/MM'))
-------------------------------------------------------------
                                                           90 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que retorna um sekect * na tabela para o clinte igual a 2?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que retorna um sekect * na tabela para o clinte igual a 2?

Ao fazer um select a tabela INSCRICOES:

 

SELECT * FROM INSCRICAO
where ID_CLIENTE =2;

O Resultado foi:

ID_INSCRICAO DATA        ID_AULA ID_CLIENTE
------------ -------- ---------- ----------
           5 14.02.12          5          2 
          21 14.02.14          6          2 
         101 14.02.16          7          2 

Como de vê o mes é 02

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.