soma e sub-soma dentro do select
29/06/2010
0
Pessoal preciso somar dentro de uma SP no Oracle.
1 - passo é fazer o select em duas tabelas, sendo que uma eu pego o valor da bolsa auxilio e do vale-transporte
do transporte do estagiário, como no código abaixo:
code
SELECT FP.ID_FOLHA_PONTO,
CE.NR_CONTRATO, CE.NR_ANO_CONTRATO,
FP.NR_MESANO_REFERENCIA,
LPAD(TO_CHAR(ES.ID_MATRICULA), 8, '0') ID_MATRICULA, ES.TX_NOME,
SUBSTR(TO_CHAR(ES.NR_CPF), 1, 3)||'.'||
SUBSTR(TO_CHAR(ES.NR_CPF), 4, 3)||'.'||
SUBSTR(TO_CHAR(ES.NR_CPF), 7, 3)||'-'||
SUBSTR(TO_CHAR(ES.NR_CPF), 10, 2) NR_CPF,
FPG.VL_TOTAL_FOLHA,
CE.NR_CODIGO_CIEE, CE.DT_INICIO_ESTAGIO, CE.DT_FIM_ESTAGIO,
( SELECT TB1.VL_BOLSA_ENSINO_MEDIO
FROM TB_GERENCIAL TB1
WHERE TB1.BL_ATIVO = 1
AND ROWNUM < 2 --Recuperar apenas o último cadastrado
) AS BOLSA,
( SELECT TB1.VL_AUX_TRANSP_DIA
FROM TB_GERENCIAL TB1
WHERE TB1.BL_ATIVO = 1
AND ROWNUM < 2 --Recuperar apenas o último cadastrado
) AS VALE_TRANSPORTE
FROM TB_CONTRATO_ESTAGIO CE
INNER JOIN TB_SOLICITACAO_ESTAGIARIO SE ON
SE.ID_SOLICITACAO = CE.ID_SOLICITACAO
INNER JOIN TB_ESTAGIARIO ES ON
ES.ID_MATRICULA = CE.ID_MATRICULA
LEFT JOIN TB_FOLHA_PONTO FP ON
FP.NR_CONTRATO = CE.NR_CONTRATO AND
FP.NR_ANO_CONTRATO = CE.NR_ANO_CONTRATO AND
FP.NR_MESANO_REFERENCIA = '06/2010'
LEFT JOIN TB_DETALHE_FOLHA_PAGTO DFP ON
DFP.NR_CONTRATO = CE.NR_CONTRATO AND
DFP.NR_ANO_CONTRATO = CE.NR_ANO_CONTRATO
LEFT JOIN TB_FOLHA_PAGAMENTO FPG ON
FPG.ID_FOLHA_PAGTO = DFP.ID_FOLHA_PAGTO AND
FPG.NR_MESANO_REFERENCIA = FP.NR_MESANO_REFERENCIA
WHERE SE.NR_NIVEL = 1
\code
com o total de estágiários da tabela "TB_CONTRATO_ESTAGIO" tenho que somar o valor da bolsa e o valor do vale transporte x o valor da quantidade de dias trabalhados.
1 - passo é fazer o select em duas tabelas, sendo que uma eu pego o valor da bolsa auxilio e do vale-transporte
do transporte do estagiário, como no código abaixo:
code
SELECT FP.ID_FOLHA_PONTO,
CE.NR_CONTRATO, CE.NR_ANO_CONTRATO,
FP.NR_MESANO_REFERENCIA,
LPAD(TO_CHAR(ES.ID_MATRICULA), 8, '0') ID_MATRICULA, ES.TX_NOME,
SUBSTR(TO_CHAR(ES.NR_CPF), 1, 3)||'.'||
SUBSTR(TO_CHAR(ES.NR_CPF), 4, 3)||'.'||
SUBSTR(TO_CHAR(ES.NR_CPF), 7, 3)||'-'||
SUBSTR(TO_CHAR(ES.NR_CPF), 10, 2) NR_CPF,
FPG.VL_TOTAL_FOLHA,
CE.NR_CODIGO_CIEE, CE.DT_INICIO_ESTAGIO, CE.DT_FIM_ESTAGIO,
( SELECT TB1.VL_BOLSA_ENSINO_MEDIO
FROM TB_GERENCIAL TB1
WHERE TB1.BL_ATIVO = 1
AND ROWNUM < 2 --Recuperar apenas o último cadastrado
) AS BOLSA,
( SELECT TB1.VL_AUX_TRANSP_DIA
FROM TB_GERENCIAL TB1
WHERE TB1.BL_ATIVO = 1
AND ROWNUM < 2 --Recuperar apenas o último cadastrado
) AS VALE_TRANSPORTE
FROM TB_CONTRATO_ESTAGIO CE
INNER JOIN TB_SOLICITACAO_ESTAGIARIO SE ON
SE.ID_SOLICITACAO = CE.ID_SOLICITACAO
INNER JOIN TB_ESTAGIARIO ES ON
ES.ID_MATRICULA = CE.ID_MATRICULA
LEFT JOIN TB_FOLHA_PONTO FP ON
FP.NR_CONTRATO = CE.NR_CONTRATO AND
FP.NR_ANO_CONTRATO = CE.NR_ANO_CONTRATO AND
FP.NR_MESANO_REFERENCIA = '06/2010'
LEFT JOIN TB_DETALHE_FOLHA_PAGTO DFP ON
DFP.NR_CONTRATO = CE.NR_CONTRATO AND
DFP.NR_ANO_CONTRATO = CE.NR_ANO_CONTRATO
LEFT JOIN TB_FOLHA_PAGAMENTO FPG ON
FPG.ID_FOLHA_PAGTO = DFP.ID_FOLHA_PAGTO AND
FPG.NR_MESANO_REFERENCIA = FP.NR_MESANO_REFERENCIA
WHERE SE.NR_NIVEL = 1
\code
com o total de estágiários da tabela "TB_CONTRATO_ESTAGIO" tenho que somar o valor da bolsa e o valor do vale transporte x o valor da quantidade de dias trabalhados.
Sergio Tavares
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)