Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Senhores.
Gostaria de saber qual a forma correta de calcular valores de duas ou mais consultas distintas. É necessário criar tabela temporária?
Inicialmente declarei algumas variáveis no sqlserver, no entanto, ao tentar utilizar o valor da consulta "A" para calcular com a consulta "B"
e armazenar este valor em uma variável auxiliar eu não consigo atribuir o resultada nela.
Preciso calcular o resultado das consultas..
DECLARE @NM_CONSORCIADO varchar(40);
DECLARE @ID_COTA int;
DECLARE @GRUPO varchar(6);
DECLARE @COTA smallint;
DECLARE @VERSAO smallint;
DECLARE @PZ_COTA smallint;
DECLARE @VL_CREDITO float;
DECLARE @PE_TA float;
DECLARE @PE_FR float;
DECLARE @PE_TAXA float;
DECLARE @VL_SD_Devedor float;
DECLARE @PE_SD_Devedor float;
DECLARE @NOTAP_PC_ATUAL float;
DECLARE @VL_BEM_C_TX float;
DECLARE @VL_SEGURO float;
DECLARE @TOTAL_BEM float;
set @ID_COTA = 135296;
SELECT
@NM_CONSORCIADO = a.NM_Consorciado,
@ID_COTA = a.ID_Cota,
@GRUPO = a.CD_Grupo,
@COTA = a.CD_Cota,
@VL_CREDITO = a.VL_Credito,
@VERSAO = a.Versao,
@PZ_COTA = a.PZ_Cota,
@PE_TA = b.PE_TA,
@PE_FR = b.PE_FR,
@PE_TAXA = d.PE_Taxa,
@NOTAP_PC_ATUAL = cast((((a.VL_Credito(b.PE_TA+b.PE_FR))/100+a.VL_Credito)+((((a.VL_Credito(b.PE_TA+b.PE_FR))/100+a.VL_Credito) d.PE_TAXA)/100a.PZ_COTA)) / a.PZ_Cota as float (2)),
@VL_BEM_C_TX = cast((a.VL_Credito*(b.PE_TA+b.PE_FR))/100+a.VL_Credito as float(2)),
@VL_SEGURO = cast((((a.VL_Credito(b.PE_TA+b.PE_FR))/100+a.VL_Credito) d.PE_TAXA)/100*a.PZ_COTA as float(2)),
@TOTAL_BEM = cast(((a.VL_Credito(b.PE_TA+b.PE_FR))/100+a.VL_Credito)+((((a.VL_Credito(b.PE_TA+b.PE_FR))/100+a.VL_Credito) d.PE_TAXA)/100a.PZ_COTA) as float (2))
FROM CONBI002 as a
inner join CONVE033 b on a.ID_Taxa_Plano=b.ID_Taxa_Plano
left join CONVE002C c on c.ID_Cota=a.ID_Cota
inner join CONSG005 d on d.ID_Plano_Seguro=c.ID_Plano_Seguro
WHERE a.ID_Cota = @ID_COTA
select @NM_CONSORCIADO as nome,@GRUPO,@COTA,@VL_CREDITO AS VL_CREDITO,@VERSAO,@PZ_COTA,@PE_TA,@PE_FR,@PE_TAXA,@NOTAP_PC_ATUAL,@VL_BEM_C_TX,@VL_SEGURO,@TOTAL_BEM;
--SELECT * FROM CONBI002 WHERE ID_Cota = 150577
-- SALDO DEVEDOR PARA QUITAÇÃO --
Select @VL_SD_Devedor = VL_SD_Devedor,@PE_SD_Devedor = PE_SD_Devedor
from fn_dsvevlsaldodevedor(@ID_COTA,GETDATE(),@VL_CREDITO) -- ID_COTA,DATA ATUAL,VALOR DO BEM
select @VL_SD_Devedor,@PE_SD_Devedor as PE_SD_Devedor
--Select * from fn_dsvevlsaldodevedor('135296',GETDATE(),'13982.86') -- ID_COTA,DATA ATUAL,VALOR DO BEM
-- SALDO DEVEDOR VENCIDO ATUAL --
select ID_Cota,resultado.CD_Grupo,resultado.CD_Cota,resultado.Versao,
SUM(resultado.VL_MJ+resultado.VL_Total)as 'VL_PENDENTE_TOTAL',
SUM(resultado.PE_FC_Ideal) as '% Total PENDENTE'
--,resultado.NO_Parcela
from (
select A.ID_Cota,
C.CD_Grupo,
C.CD_Cota,
C.Versao,
A.NO_Parcela,
A.DT_Vencimento,
A.VL_MJ,
A.VL_Total,
B.PE_FC_Ideal
from vw_ReCobranca AS A
INNER JOIN vw_VePEIdealMensal B ON A.ID_Cota = B.ID_Cota
inner join CONBI002 C ON C.ID_Cota = A.ID_Cota
where A.ID_Cota = 135296--@ID_COTA
and a.ID_CD_Movto_Fin IN ('10')
AND A.NO_PARCELA= b.NO_Parcela
and A.DT_Vencimento < GETDATE())as resultado group by ID_cota,CD_Grupo,CD_Cota,Versao--,NO_Parcela
Acima eu tenho consultas distintas, e que preciso do resultado delas para fazer outros calculo...
Não vejo problemas entre utilizar as variaveis para calculos.
O que nao esta trazendo sao valores nas variaveis? Esta arredondando?
Exemplo:.
declare @n1 int
declare @n2 int
declare @n3 int
declare @aux_n4 int
Select @n1 = vl_1 from A
Select @n2 = vl_2 from B
Select @n3 = vl_3 from C
@aux_n4 = @n1+@n2; --(aqui apresenta o erro)
SELECT @aux_n4 = @n1+@n2; --(ASSIM EXECUTA E ARMAZENA O SOMA NORMALMENTE. PRECISO COLOCAR O "SELECT")
SELECT @aux_n4 -- (AQUI LISTA O RESULTADO)Ou SET @aux_n4 = @n1+@n2;
Detalhe melhor o problema , ao menos para mim ficou pouco claro.