Ir para conteúdo
Fórum Script Brasil
  • 0

soma de valores dependendo de uma mascara de código


paulokpk

Pergunta

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

 

 

PRINT 1 FORUM.png

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...