Preciso deixar de forma que o usuario escolha o mês para calcular o ESTDIA.
Na linha em vermelho e em negrito.
Quando deixo o :MES e executa da erro e já deixar definido exemplo V.OUTUBRO o select roda sem erros.
ORA-01722: número inválido
01722. 00000 - "invalid number"
*Cause:
*Action:
Pergunta
dougx
Bom dia :
Preciso deixar de forma que o usuario escolha o mês para calcular o ESTDIA.
Na linha em vermelho e em negrito.
Quando deixo o :MES e executa da erro e já deixar definido exemplo V.OUTUBRO o select roda sem erros.
ORA-01722: número inválido
01722. 00000 - "invalid number"
*Cause:
*Action:
SELECT
V.CODFORNEC,
V.FORNECEDOR,
ROUND(V.JANEIRO, 2) JANEIRO,
ROUND(V.FEVEREIRO, 2) FEVEREIRO,
ROUND(V.MARCO, 2) MARCO,
ROUND(V.ABRIL, 2) ABRIL,
ROUND(V.MAIO, 2) MAIO,
ROUND(V.JUNHO, 2) JUNHO,
ROUND(V.JULHO, 2) JULHO,
ROUND(V.AGOSTO, 2) AGOSTO,
ROUND(V.SETEMBRO, 2) SETEMBRO,
ROUND(V.OUTUBRO, 2) OUTUBRO,
ROUND(V.NOVEMBRO, 2) NOVEMBRO,
ROUND(V.DEZEMBRO, 2) DEZEMBRO,
ROUND(V.VL_TOTAL1, 2) VLTOTAL1,
ROUND(V.VL_TOTAL2, 2) VLTOTAL2,
ROUND(VL_ESTOQUE.VL_ESTOQUE, 2) VLESTOQUE,
-- Assim roda sem erros: ROUND( (VL_ESTOQUE.VL_ESTOQUE)/DECODE((V.OUTUBRO), 0, 1,(V.OUTUBRO)) * 30,2) ESTDIAS,
-- ROUND( (VL_ESTOQUE.VL_ESTOQUE)/DECODE((:MES), 0, 1,(:MES)) * 30,2) ESTDIAS
FROM
(SELECT
P1.CODFORNEC,
P1.FORNECEDOR,
P1.JANEIRO,
P1.FEVEREIRO,
P1.MARCO,
P1.ABRIL,
P1.MAIO,
P1.JUNHO,
P1.JULHO,
P1.AGOSTO,
P1.SETEMBRO,
P1.OUTUBRO,
P1.NOVEMBRO,
P1.DEZEMBRO,
P1.VL_TOTAL1,
P2.VL_TOTAL2
FROM
(SELECT
PCMOV.CODFORNEC,
PCFORNEC.FORNECEDOR,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '01', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS JANEIRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '02', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS FEVEREIRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '03', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS MARCO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '04', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS ABRIL,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '05', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS MAIO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '06', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS JUNHO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '07', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS JULHO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '08', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS AGOSTO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '09', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS SETEMBRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '10', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS OUTUBRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '11', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS NOVEMBRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '12', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS DEZEMBRO,
TRUNC(NVL(TRUNC(SUM(NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 3), 0), 3) AS VL_TOTAL1
FROM
PCFORNEC PCFORNEC,
PCMOV PCMOV
WHERE PCFORNEC.CODFORNEC = PCMOV.CODFORNEC
AND PCMOV.CODFILIAL IN (3)
AND PCMOV.DTMOV BETWEEN TO_DATE('01/10/2013', 'DD/MM/YYYY') AND TO_DATE('31/10/2013', 'DD/MM/YYYY')
AND PCMOV.DTCANCEL IS NULL
AND PCMOV.CODOPER IN ('SB', 'S')
GROUP BY
PCMOV.CODFORNEC,
PCFORNEC.FORNECEDOR
ORDER BY
TRUNC(NVL(TRUNC(SUM(NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 3), 0), 3) DESC)
P1 ,
(SELECT
PCMOV.CODFORNEC,
PCFORNEC.FORNECEDOR,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '01', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS JANEIRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '02', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS FEVEREIRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '03', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS MARCO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '04', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS ABRIL,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '05', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS MAIO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '06', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS JUNHO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '07', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS JULHO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '08', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS AGOSTO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '09', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS SETEMBRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '10', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS OUTUBRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '11', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS NOVEMBRO,
TRUNC(SUM(DECODE(TO_CHAR(PCMOV.DTMOV, 'MM'), '12', (NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 0)), 3) AS DEZEMBRO,
TRUNC(NVL(TRUNC(SUM(NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 3), 0), 3) AS VL_TOTAL2
FROM
PCFORNEC PCFORNEC,
PCMOV PCMOV
WHERE PCFORNEC.CODFORNEC = PCMOV.CODFORNEC
AND PCMOV.CODFILIAL IN (3)
AND PCMOV.DTMOV BETWEEN TO_DATE('01/10/2014', 'DD/MM/YYYY') AND TO_DATE('31/10/2014', 'DD/MM/YYYY')
AND PCMOV.DTCANCEL IS NULL
AND PCMOV.CODOPER IN ('SB', 'S')
GROUP BY
PCMOV.CODFORNEC,
PCFORNEC.FORNECEDOR
ORDER BY
TRUNC(NVL(TRUNC(SUM(NVL(PCMOV.QT, 0) * NVL(PCMOV.PUNIT, 0)), 3), 0), 3) DESC) P2
WHERE P1.CODFORNEC = P2.CODFORNEC )V,
(SELECT
PCPRODUT.CODFORNEC,
ROUND(SUM(NVL(PCEST.QTESTGER, 0) * NVL(PCTABPR.PVENDA, 0)), 2) AS VL_ESTOQUE
FROM PCEST PCEST
INNER JOIN PCTABPR PCTABPR ON PCEST.CODPROD = PCTABPR.CODPROD
INNER JOIN PCPRODUT PCPRODUT ON PCPRODUT.CODPROD = PCEST.CODPROD
WHERE PCTABPR.NUMREGIAO = 1
AND PCPRODUT.DTEXCLUSAO IS NULL
GROUP BY PCPRODUT.CODFORNEC)
VL_ESTOQUE
WHERE V.CODFORNEC = VL_ESTOQUE.CODFORNEC;
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.