Usuário com melhor resposta
USAR O VALOR MAXIMO DE UMA COLUNA PARA FAZER UM CALCULO.

Pergunta
-
Olá amigos,
estou tentando usar o valor maximo de uma coluna para fazer um calculo, mas não estou conseguindo, segue abaixo exemplo.
SELECT A.ORDEM AS ORD, B.CODIGO, B.NOME, B.CODIGONCM AS NCM, A.CST, A.CFOP, a.QUANT,
A.DESCONTO AS DESC, a.PRECO AS "V.UNIT", A.TOTAL,
A.TOTAL/100*A.ALIQUOTAICMS AS "V.ICMS",
A.ALIQUOTAICMS AS ICMS, B.CUSTOFINANCEIRO AS "C.FINAN",
B.CUSTOFINANCEIRO-A.ALIQUOTAICMS AS "DIF.ICMS",
B.MARKUP,a.VALORIPI AS "V.IPI", A.IPI, B.PRECO_VENDA AS "P.VENDA",
(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "V.DIF",
330.34/18 AS "V.PAGO",
330.34/18-(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "DIF.PAGA"
FROM ENTRADA_PRODUTO a
inner join PRODUTO B
ON A.ID_PRODUTO = B.ID
INNER JOIN ENTRADA D
ON A.ID_ENTRADA = D.ID
INNER join PESSOA C
ON C.ID = D.ID_PESSOA
where D.ELIMINADO = 'N' AND d.numero like '%10387%' AND C.NOME LIKE '%DECORA%'está estou tendo o seguinte resultado
porém eu preciso usar o maior numero de ORD que neste exemplo é o valor 55, para fazer um calculo. exemplo abaixo em negrito:
SELECT A.ORDEM AS ORD, B.CODIGO, B.NOME, B.CODIGONCM AS NCM, A.CST, A.CFOP, a.QUANT,
A.DESCONTO AS DESC, a.PRECO AS "V.UNIT", A.TOTAL,
A.TOTAL/100*A.ALIQUOTAICMS AS "V.ICMS",
A.ALIQUOTAICMS AS ICMS, B.CUSTOFINANCEIRO AS "C.FINAN",
B.CUSTOFINANCEIRO-A.ALIQUOTAICMS AS "DIF.ICMS",
B.MARKUP,a.VALORIPI AS "V.IPI", A.IPI, B.PRECO_VENDA AS "P.VENDA",
(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "V.DIF",
330.34/max(a.ordem) AS "V.PAGO",
330.34/max(a.ordem)-(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "DIF.PAGA"
FROM ENTRADA_PRODUTO a
inner join PRODUTO B
ON A.ID_PRODUTO = B.ID
INNER JOIN ENTRADA D
ON A.ID_ENTRADA = D.ID
INNER join PESSOA C
ON C.ID = D.ID_PESSOA
where D.ELIMINADO = 'N' AND d.numero like '%10387%' AND C.NOME LIKE '%DECORA%'
Respostas
-
Experimente fazer um teste com a versão abaixo:
with CTE_Orig as ( SELECT A.ORDEM AS ORD, B.CODIGO, B.NOME, B.CODIGONCM AS NCM, A.CST, A.CFOP, a.QUANT, A.DESCONTO AS DESC, a.PRECO AS "V.UNIT", A.TOTAL, A.TOTAL / 100 * A.ALIQUOTAICMS AS "V.ICMS", A.ALIQUOTAICMS AS ICMS, B.CUSTOFINANCEIRO AS "C.FINAN", B.CUSTOFINANCEIRO - A.ALIQUOTAICMS AS "DIF.ICMS", B.MARKUP, a.VALORIPI AS "V.IPI", A.IPI, B.PRECO_VENDA AS "P.VENDA", (B.CUSTOFINANCEIRO - A.ALIQUOTAICMS) * (A.TOTAL / 100) AS "V.DIF" FROM ENTRADA_PRODUTO a inner join PRODUTO B ON A.ID_PRODUTO = B.ID INNER JOIN ENTRADA D ON A.ID_ENTRADA = D.ID INNER join PESSOA C ON C.ID = D.ID_PESSOA where D.ELIMINADO = 'N' AND d.numero like '%10387%' AND C.NOME LIKE '%DECORA%' ), CTE_Max as ( select max(ord) as ordem from CTE_Orig ) select o.*, 330.34 / m.ordem AS "V.PAGO", 330.34 / m.ordem - o."V.DIF" AS "DIF.PAGA" from CTE_Orig as o cross join CTE_Max as m
Se não funcionar, favor informar a mensagem de erro exibida.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta ABRÃOHITO MENEZES quarta-feira, 5 de setembro de 2018 18:18
Todas as Respostas
-
Olá amigos,
estou tentando usar o valor maximo de uma coluna para fazer um calculo, mas não estou conseguindo, segue abaixo exemplo.
SELECT A.ORDEM AS ORD, B.CODIGO, B.NOME, B.CODIGONCM AS NCM, A.CST, A.CFOP, a.QUANT,
A.DESCONTO AS DESC, a.PRECO AS "V.UNIT", A.TOTAL,
A.TOTAL/100*A.ALIQUOTAICMS AS "V.ICMS",
A.ALIQUOTAICMS AS ICMS, B.CUSTOFINANCEIRO AS "C.FINAN",
B.CUSTOFINANCEIRO-A.ALIQUOTAICMS AS "DIF.ICMS",
B.MARKUP,a.VALORIPI AS "V.IPI", A.IPI, B.PRECO_VENDA AS "P.VENDA",
(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "V.DIF",
330.34/18 AS "V.PAGO",
330.34/18-(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "DIF.PAGA"
FROM ENTRADA_PRODUTO a
inner join PRODUTO B
ON A.ID_PRODUTO = B.ID
INNER JOIN ENTRADA D
ON A.ID_ENTRADA = D.ID
INNER join PESSOA C
ON C.ID = D.ID_PESSOA
where D.ELIMINADO = 'N' AND d.numero like '%10387%' AND C.NOME LIKE '%DECORA%'está estou tendo o seguinte resultado
porém eu preciso usar o maior numero de ORD que neste exemplo é o valor 55, para fazer um calculo. exemplo abaixo em negrito:
SELECT A.ORDEM AS ORD, B.CODIGO, B.NOME, B.CODIGONCM AS NCM, A.CST, A.CFOP, a.QUANT,
A.DESCONTO AS DESC, a.PRECO AS "V.UNIT", A.TOTAL,
A.TOTAL/100*A.ALIQUOTAICMS AS "V.ICMS",
A.ALIQUOTAICMS AS ICMS, B.CUSTOFINANCEIRO AS "C.FINAN",
B.CUSTOFINANCEIRO-A.ALIQUOTAICMS AS "DIF.ICMS",
B.MARKUP,a.VALORIPI AS "V.IPI", A.IPI, B.PRECO_VENDA AS "P.VENDA",
(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "V.DIF",
330.34/max(a.ordem) AS "V.PAGO",
330.34/max(a.ordem)-(B.CUSTOFINANCEIRO-A.ALIQUOTAICMS)*(A.TOTAL/100) AS "DIF.PAGA"
FROM ENTRADA_PRODUTO a
inner join PRODUTO B
ON A.ID_PRODUTO = B.ID
INNER JOIN ENTRADA D
ON A.ID_ENTRADA = D.ID
INNER join PESSOA C
ON C.ID = D.ID_PESSOA
where D.ELIMINADO = 'N' AND d.numero like '%10387%' AND C.NOME LIKE '%DECORA%' -
Boa tarde,
Qual banco de dados você está utilizando? Se for o SQL Server experimente trocar o
max(a.ordem)
por
max(a.ordem) over()
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Boa tarde,
Qual banco de dados você está utilizando? Se for o SQL Server experimente trocar o
max(a.ordem)
por
max(a.ordem) over()
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Qual versão?
Assinatura: http://www.imoveisemexposicao.com.br
-
Experimente mais ou menos dessa forma para ver se funciona:
with CTE_Orig as ( -- query original sem as colunas "V.PAGO" e "DIF.PAGA" ), CTE_Max as ( select max(a.ordem) as ordem from CTE_Orig ) select o.*, 330.34 / m.ordem AS "V.PAGO", 330.34 / m.ordem - o."V.DIF" AS "DIF.PAGA" from CTE_Orig as o cross join CTE_Max as m
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Experimente fazer um teste com a versão abaixo:
with CTE_Orig as ( SELECT A.ORDEM AS ORD, B.CODIGO, B.NOME, B.CODIGONCM AS NCM, A.CST, A.CFOP, a.QUANT, A.DESCONTO AS DESC, a.PRECO AS "V.UNIT", A.TOTAL, A.TOTAL / 100 * A.ALIQUOTAICMS AS "V.ICMS", A.ALIQUOTAICMS AS ICMS, B.CUSTOFINANCEIRO AS "C.FINAN", B.CUSTOFINANCEIRO - A.ALIQUOTAICMS AS "DIF.ICMS", B.MARKUP, a.VALORIPI AS "V.IPI", A.IPI, B.PRECO_VENDA AS "P.VENDA", (B.CUSTOFINANCEIRO - A.ALIQUOTAICMS) * (A.TOTAL / 100) AS "V.DIF" FROM ENTRADA_PRODUTO a inner join PRODUTO B ON A.ID_PRODUTO = B.ID INNER JOIN ENTRADA D ON A.ID_ENTRADA = D.ID INNER join PESSOA C ON C.ID = D.ID_PESSOA where D.ELIMINADO = 'N' AND d.numero like '%10387%' AND C.NOME LIKE '%DECORA%' ), CTE_Max as ( select max(ord) as ordem from CTE_Orig ) select o.*, 330.34 / m.ordem AS "V.PAGO", 330.34 / m.ordem - o."V.DIF" AS "DIF.PAGA" from CTE_Orig as o cross join CTE_Max as m
Se não funcionar, favor informar a mensagem de erro exibida.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta ABRÃOHITO MENEZES quarta-feira, 5 de setembro de 2018 18:18
-