Eu tenho um relatório onde são inseridos itens que possuem mascaras como o exemplo 000.000.000. Esses itens são cadastrados e todos eles possuem valores individuais e eu preciso que em um nível acima ex. 000.000 sejam exibidos os totais.
Ex código | valor
001.001 400 <<< total dos valores abaixo
001.001.001 100
001.001.002 100
001.001.003 100
001.001.004 100
Entretanto tudo é cadastrado junto, eu preciso que este total saia em uma consulta. Segue a consulta abaixo:
essa informação deve aparecer no campo VALORCONTRATADO
segue abaixo a consulta como está hoje e em anexo um exemplo de resultado
SELECT CODTRF,
NOME,
PROJETOECO,
PEP,
SUBPEP,
CODUND,
SUM(IDITMCNT) AS IDITMCNT,
SUM(QUANTIDADEMEDIDAACUM) AS QUANTIDADEMEDIDAACUM,
SUM(VALORMEDIDOACUM) AS VALORMEDIDOACUM,
SUM(QUANTIDADEMEDIDAPDO) AS QUANTIDADEMEDIDAPDO,
SUM(VALORMEDIDOAPDO) AS VALORMEDIDOAPDO,
SUM(QUANTIDADEMEDIDAPDO) * SUM(VALORUNITCONTRATADO) AS VALORMEDIDOINICIAL,
SUM(QUANTIDADEMEDIDAACUM) - SUM(QUANTIDADEMEDIDAPDO) AS QUANTIDADEACUMANTERIOR,
SUM(VALORMEDIDOACUM) - SUM(VALORMEDIDOAPDO) AS VALORACUMANTERIOR,
SUM(QUANTIDADEMEDIDAACUM - QUANTIDADEMEDIDAPDO) * SUM(VALORUNITCONTRATADO) AS VALORACUMANTERIORINICIAL,
SUM(QUANTIDADEMEDIDAACUM) * SUM(VALORUNITCONTRATADO) AS VALORACUMINICIAL,
SUM(QTDCONTRATADOINICIAL) AS QTDCONTRATADOINICIAL,
SUM(VALORUNITCONTRATADO) AS VALORUNITINICIAL,
SUM(VALORCONTRATADOINICIAL) AS VALORCONTRATADOINICIAL,
SUM(QTDCONTRATADO) AS QTDCONTRATADO,
SUM(VALORUNITCONTRATADO) AS VALORUNITCONTRATADO, SUM(VALORCONTRATADO) AS VALORCONTRATADO,
SUM(SALDOQTD) AS SALDOQTD,
SUM(SALDOVALOR) AS SALDOVALOR,
SUM(SALDOPERC) AS SALDOPERC
FROM (
SELECT C.CODTRF,
C.NOME,
C.CAMPOLIVRE1 AS PROJETOECO,
C.CAMPOLIVRE2 AS PEP,
C.CAMPOLIVRE3 AS SUBPEP,
C.CODUND,
B.IDITMCNT,
SUM(COALESCE(A.QUANTIDADEMEDIDA, 0)) QUANTIDADEMEDIDAACUM,
SUM(COALESCE(A.VALORMEDIDOPI, 0)) VALORMEDIDOPI,
SUM(COALESCE(A.VALORCALCULOREAJUSTE, 0)) VALORCALCULOREAJUSTE,
SUM(COALESCE(A.VALORMEDIDO, 0) * (CASE WHEN PERIODOCLASSIFICACAO = 1 THEN -1 ELSE 1 END)) AS VALORMEDIDOACUM,
SUM(CASE
WHEN A.PERIODOMED LIKE :PERIODOMED THEN COALESCE(A.QUANTIDADEMEDIDA, 0)
ELSE 0
END) QUANTIDADEMEDIDAPDO,
SUM(CASE
WHEN A.PERIODOMED LIKE :PERIODOMED THEN
CASE WHEN COALESCE(A.CAMPOMEDIDO,'') = 'V' THEN
COALESCE(A.VALORMEDIDO, 0)
ELSE
COALESCE(A.QUANTIDADEMEDIDA, 0) * COALESCE(A.VALORITEMPDO,COALESCE(B.VALORINICIAL, 0))
END
ELSE 0
END) VALORMEDIDOAPDO,
MAX(COALESCE(B.QUANTIDADEINICIAL, 0)) AS QTDCONTRATADOINICIAL,
MAX(COALESCE(B.QUANTIDADEINICIAL, 0) * COALESCE(B.VALORINICIAL, 0)) AS VALORCONTRATADOINICIAL,
MAX(COALESCE(B.QUANTIDADE, 0)) AS QTDCONTRATADO,
MAX(COALESCE(B.VALORINICIAL, 0)) AS VALORUNITCONTRATADO, MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) AS VALORCONTRATADO,
MAX(COALESCE(B.QUANTIDADE, 0)) - SUM(COALESCE(A.QUANTIDADEMEDIDA, 0)) AS SALDOQTD,
MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) - SUM(CASE WHEN COALESCE(A.CAMPOMEDIDO,'') = 'V' THEN COALESCE(A.VALORMEDIDO, 0)
ELSE
COALESCE(A.QUANTIDADEMEDIDA, 0) * COALESCE(B.VALORINICIAL, 0)
END)AS SALDOVALOR,
( MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) - SUM(COALESCE(A.QUANTIDADEMEDIDA, 0) * COALESCE(B.VALORINICIAL, 0)) ) / ( MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) ) SALDOPERC
FROM MITMCNT B (NOLOCK)
LEFT JOIN MTRFMED A (NOLOCK)
ON A.CODCOLIGADA = B.CODCOLIGADA
AND A.IDPRJ = B.IDPRJ
AND A.IDCNT = B.IDCNT
AND A.IDITMCNT = B.IDITMCNT
AND ( A.PERIODOMED <= :PERIODOMED
OR A.PERIODOMED LIKE ( :PERIODOMED || '%' ) )
LEFT JOIN MTAREFA C (NOLOCK)
ON B.CODCOLIGADA = C.CODCOLIGADA
AND B.IDPRJ = C.IDPRJ
AND B.IDTRF = C.IDTRF
WHERE B.CODCOLIGADA = :CODCOLIGADA
AND B.IDPRJ = :IDPRJ
AND B.IDCNT = :IDCNT
AND C.IDCENARIO = 0
GROUP BY C.CODTRF,
C.NOME,
C.CAMPOLIVRE1,
C.CAMPOLIVRE2,
C.CAMPOLIVRE3,
C.CODUND,
B.IDITMCNT
UNION ALL
SELECT A.CODTRF,
A.NOME,
A.CAMPOLIVRE1 AS PROJETOECO,
A.CAMPOLIVRE2 AS PEP,
A.CAMPOLIVRE3 AS SUBPEP,
A.CODUND,
0 AS IDITMCNT,
0 AS QUANTIDADEMEDIDAACUM,
0 AS VALORMEDIDOPI,
0 AS VALORCALCULOREAJUSTE,
0 AS VALORMEDIDOACUM,
0 AS QUANTIDADEMEDIDAPDO,
0 AS VALORMEDIDOAPDO,
0 AS QTDCONTRATADOINICIAL,
0 AS VALORCONTRATADOINICIAL,
0 AS QTDCONTRATADO,
0 AS VALORUNITCONTRATADO, 0 AS VALORCONTRATADO,
0 AS SALDOQTD,
0 AS SALDOVALOR,
0 AS SALDOPERC
FROM MTAREFA A (NOLOCK)
WHERE A.CODCOLIGADA = :CODCOLIGADA
AND A.IDPRJ = :IDPRJ
AND 'SIM' = UPPER(:TODAS_AS_TAREFAS)
) QFIM
GROUP BY CODTRF, NOME, CODUND, PROJETOECO, PEP, SUBPEP
ORDER BY CODTRF
Pergunta
paulokpk
Bom dia,
Eu tenho um relatório onde são inseridos itens que possuem mascaras como o exemplo 000.000.000. Esses itens são cadastrados e todos eles possuem valores individuais e eu preciso que em um nível acima ex. 000.000 sejam exibidos os totais.
Ex código | valor
001.001 400 <<< total dos valores abaixo
001.001.001 100
001.001.002 100
001.001.003 100
001.001.004 100
Entretanto tudo é cadastrado junto, eu preciso que este total saia em uma consulta. Segue a consulta abaixo:
essa informação deve aparecer no campo VALORCONTRATADO
segue abaixo a consulta como está hoje e em anexo um exemplo de resultado
---------------------------------------------------------------------------------------------------------------------------------
SELECT CODTRF,
NOME,
PROJETOECO,
PEP,
SUBPEP,
CODUND,
SUM(IDITMCNT) AS IDITMCNT,
SUM(QUANTIDADEMEDIDAACUM) AS QUANTIDADEMEDIDAACUM,
SUM(VALORMEDIDOACUM) AS VALORMEDIDOACUM,
SUM(QUANTIDADEMEDIDAPDO) AS QUANTIDADEMEDIDAPDO,
SUM(VALORMEDIDOAPDO) AS VALORMEDIDOAPDO,
SUM(QUANTIDADEMEDIDAPDO) * SUM(VALORUNITCONTRATADO) AS VALORMEDIDOINICIAL,
SUM(QUANTIDADEMEDIDAACUM) - SUM(QUANTIDADEMEDIDAPDO) AS QUANTIDADEACUMANTERIOR,
SUM(VALORMEDIDOACUM) - SUM(VALORMEDIDOAPDO) AS VALORACUMANTERIOR,
SUM(QUANTIDADEMEDIDAACUM - QUANTIDADEMEDIDAPDO) * SUM(VALORUNITCONTRATADO) AS VALORACUMANTERIORINICIAL,
SUM(QUANTIDADEMEDIDAACUM) * SUM(VALORUNITCONTRATADO) AS VALORACUMINICIAL,
SUM(QTDCONTRATADOINICIAL) AS QTDCONTRATADOINICIAL,
SUM(VALORUNITCONTRATADO) AS VALORUNITINICIAL,
SUM(VALORCONTRATADOINICIAL) AS VALORCONTRATADOINICIAL,
SUM(QTDCONTRATADO) AS QTDCONTRATADO,
SUM(VALORUNITCONTRATADO) AS VALORUNITCONTRATADO,
SUM(VALORCONTRATADO) AS VALORCONTRATADO,
SUM(SALDOQTD) AS SALDOQTD,
SUM(SALDOVALOR) AS SALDOVALOR,
SUM(SALDOPERC) AS SALDOPERC
FROM (
SELECT C.CODTRF,
C.NOME,
C.CAMPOLIVRE1 AS PROJETOECO,
C.CAMPOLIVRE2 AS PEP,
C.CAMPOLIVRE3 AS SUBPEP,
C.CODUND,
B.IDITMCNT,
SUM(COALESCE(A.QUANTIDADEMEDIDA, 0)) QUANTIDADEMEDIDAACUM,
SUM(COALESCE(A.VALORMEDIDOPI, 0)) VALORMEDIDOPI,
SUM(COALESCE(A.VALORCALCULOREAJUSTE, 0)) VALORCALCULOREAJUSTE,
SUM(COALESCE(A.VALORMEDIDO, 0) * (CASE WHEN PERIODOCLASSIFICACAO = 1 THEN -1 ELSE 1 END)) AS VALORMEDIDOACUM,
SUM(CASE
WHEN A.PERIODOMED LIKE :PERIODOMED THEN COALESCE(A.QUANTIDADEMEDIDA, 0)
ELSE 0
END) QUANTIDADEMEDIDAPDO,
SUM(CASE
WHEN A.PERIODOMED LIKE :PERIODOMED THEN
CASE WHEN COALESCE(A.CAMPOMEDIDO,'') = 'V' THEN
COALESCE(A.VALORMEDIDO, 0)
ELSE
COALESCE(A.QUANTIDADEMEDIDA, 0) * COALESCE(A.VALORITEMPDO,COALESCE(B.VALORINICIAL, 0))
END
ELSE 0
END) VALORMEDIDOAPDO,
MAX(COALESCE(B.QUANTIDADEINICIAL, 0)) AS QTDCONTRATADOINICIAL,
MAX(COALESCE(B.QUANTIDADEINICIAL, 0) * COALESCE(B.VALORINICIAL, 0)) AS VALORCONTRATADOINICIAL,
MAX(COALESCE(B.QUANTIDADE, 0)) AS QTDCONTRATADO,
MAX(COALESCE(B.VALORINICIAL, 0)) AS VALORUNITCONTRATADO,
MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) AS VALORCONTRATADO,
MAX(COALESCE(B.QUANTIDADE, 0)) - SUM(COALESCE(A.QUANTIDADEMEDIDA, 0)) AS SALDOQTD,
MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) - SUM(CASE WHEN COALESCE(A.CAMPOMEDIDO,'') = 'V' THEN COALESCE(A.VALORMEDIDO, 0)
ELSE
COALESCE(A.QUANTIDADEMEDIDA, 0) * COALESCE(B.VALORINICIAL, 0)
END)AS SALDOVALOR,
( MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) - SUM(COALESCE(A.QUANTIDADEMEDIDA, 0) * COALESCE(B.VALORINICIAL, 0)) ) / ( MAX(COALESCE(B.QUANTIDADE, 0) * COALESCE(B.VALORINICIAL, 0)) ) SALDOPERC
FROM MITMCNT B (NOLOCK)
LEFT JOIN MTRFMED A (NOLOCK)
ON A.CODCOLIGADA = B.CODCOLIGADA
AND A.IDPRJ = B.IDPRJ
AND A.IDCNT = B.IDCNT
AND A.IDITMCNT = B.IDITMCNT
AND ( A.PERIODOMED <= :PERIODOMED
OR A.PERIODOMED LIKE ( :PERIODOMED || '%' ) )
LEFT JOIN MTAREFA C (NOLOCK)
ON B.CODCOLIGADA = C.CODCOLIGADA
AND B.IDPRJ = C.IDPRJ
AND B.IDTRF = C.IDTRF
WHERE B.CODCOLIGADA = :CODCOLIGADA
AND B.IDPRJ = :IDPRJ
AND B.IDCNT = :IDCNT
AND C.IDCENARIO = 0
GROUP BY C.CODTRF,
C.NOME,
C.CAMPOLIVRE1,
C.CAMPOLIVRE2,
C.CAMPOLIVRE3,
C.CODUND,
B.IDITMCNT
UNION ALL
SELECT A.CODTRF,
A.NOME,
A.CAMPOLIVRE1 AS PROJETOECO,
A.CAMPOLIVRE2 AS PEP,
A.CAMPOLIVRE3 AS SUBPEP,
A.CODUND,
0 AS IDITMCNT,
0 AS QUANTIDADEMEDIDAACUM,
0 AS VALORMEDIDOPI,
0 AS VALORCALCULOREAJUSTE,
0 AS VALORMEDIDOACUM,
0 AS QUANTIDADEMEDIDAPDO,
0 AS VALORMEDIDOAPDO,
0 AS QTDCONTRATADOINICIAL,
0 AS VALORCONTRATADOINICIAL,
0 AS QTDCONTRATADO,
0 AS VALORUNITCONTRATADO,
0 AS VALORCONTRATADO,
0 AS SALDOQTD,
0 AS SALDOVALOR,
0 AS SALDOPERC
FROM MTAREFA A (NOLOCK)
WHERE A.CODCOLIGADA = :CODCOLIGADA
AND A.IDPRJ = :IDPRJ
AND 'SIM' = UPPER(:TODAS_AS_TAREFAS)
) QFIM
GROUP BY CODTRF, NOME, CODUND, PROJETOECO, PEP, SUBPEP
ORDER BY CODTRF
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.