Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tanaka_

Como Calcular valores armazenados em variáveis no sqlserver de duas co

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Detalhe melhor o problema , ao menos para mim ficou pouco claro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)/100*a.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)/100*a.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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo problemas entre utilizar as variaveis para calculos.

O que nao esta trazendo sao valores nas variaveis? Esta arredondando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mamotinho
      Olá, estou a um tempo tentando acrescentar um codigo na coluna do SQL na qual seria VARBINARY

      A Coluna atual contém o seguinte codigo binary:
      Código (01)
      0x020009004C0101434D0101465C0101485D0101499801014B8401014E8501014F86010150D00009017A0014247D0014257B0014261600090201000903F9001420FA0014229F000923F8001427DF000128730014297600142A7E00142BFB00142CA3010147E000142DE100142EA40101443900120424001405C40101457400142F770014307F0001317C001232E6000421780001332C010A522F0108533A010354380103553001085637010357A5010166A6010167  
      No codigo acima eu gostaria de acrescentar o seguinte codigo:
      Código (02)
      0xCC010120CD010121CE010122CF010123
      no caso eu quero criar uma procedure que ao executar a função ele adicione o codigo 02 no código 01. no caso o codigo ficaria desta forma:

      0x020009004C0101434D0101465C0101485D0101499801014B8401014E8501014F86010150D00009017A0014247D0014257B0014261600090201000903F9001420FA0014229F000923F8001427DF000128730014297600142A7E00142BFB00142CA3010147E000142DE100142EA40101443900120424001405C40101457400142F770014307F0001317C001232E6000421780001332C010A522F0108533A010354380103553001085637010357A5010166A6010167CC010120CD010121CE010122CF010123



      Ficarei imensamente grato se alguém conseguir me ajudar, o orientar. sou iniciante nessa areá ainda.
    • Por tanaka_
      Gostaria de saber se é possível listar todos os objetos criados no banco de dados por usuário especifico.
      Não é para listar os "dbo" e sim o usuário logado que criou o objeto.
       
      Usuário logado:
      select SYSTEM_USER
       
      Todos os objetos criados:
      select * from sys.all_objects
    • Por tanaka_
      Gostaria de saber se é possível listar todos os objetos criados no banco de dados por usuário especifico.
      Não é para listar os "dbo" e sim o usuário logado que criou o objeto.
       
      Usuário logado:
      select SYSTEM_USER
       
      Todos os objetos criados:
      select * from sys.all_objects
    • Por carlos melo
      Boa noite, trabalho com Delphi e estou tendo dificuldade em fazer conexão com meu servidor que esta na argentina, uso o firedac para fazer a conexão com o banco, so que o comando que estou utilizando esta dando erro e não sei se estou configurando certo a minha query.
       
      Ja criei os linked server e tambem não resolveu......
       
       uso um select dentro do delphi dessa maneira : 
      DELPHI
      FDQuery e dentro uso esse select
      Select * from [192.168.XX.XXX].banco.dbo.tabela direcionando para o meu servidor que esta na argentina sendo 192.168.xx.xxx o ip do servidor de la e o nome do banco é servicos e a tabela ordens.
       
      Se alguem conhece ou ja fez esse tipo de conexão , estou precisando dessa grande ajuda...
       
      obrigado
    • Por Robson Barros da Rocha
      Bom dia povo. Tenho um problema, e não uma dúvida. Eu executo no SQL Server esta query para agrupar os resultados cujo tenha o código do comprovante repetido:
      SELECT * FROM SHOP_Pedidos WHERE show='1' GROUP BY comprovante As colunas são:
      ID = Se preenche automaticamente
      comprovante = Recebe o código do comprovante
      productName = Nome do produto
      productValue = Valor do produto
      dateSent = Data que o produto foi enviado
      show = Enviado (1) e não enviado (0)
       
      A query que mostrei acima, não retorna dados porque aparece esse erro: "Column 'SHOP_Pedidos.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause." Certo, então aí que está o problema. Vendo o erro, eu troquei a * pela coluna comprovante, e resultou, mas a consulta só retorna a coluna comprovante (por conta do SELECT estar especificando somente ele. 
       
      A dúvida é: Tem como recuperar todos as colunas, assim como mysql?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.