SQL SERVER INSERIR DADOS MULTIPLICADO PELA VARIAVEL

SQL Server

13/03/2021

ola amigos ! gostaria de saber se alguem sabe inserir dados no sql server multiplicando por uma variavel?

ex:

contrato de trabalho :

valor do contrato 500,00
mensalidade 5
valor mensal 100,00


na minha tabela tem
idcontrato
valorcontrato
mensal
valormensal
datavencimento1
datavencimento2
datavencimento3
datavencimento4
datavencimento5


hoje coloco um insert da seguinte maneira
datavencimento1 = date()+1m
datavencimento2 = date()+2m
etc ... até o datavencimento5

mas vem a duvida... caso eu queira dividir só em 2x consigo fazer dentro do sql uma multiplicação
exemplo:
caso mensal = 2
insert
datavencimento1 = date()+1m
datavencimento2 = date()+2m
caso mensal = 3
datavencimento1 = date()+1m
datavencimento2 = date()+2m
datavencimento3 = date()+3m
e assim vai
ou tenho que fazer isso na programação.


ps: ja tenho isso dentro no ASP Classico queria fazer direto pelo banco
Paulo Victor

Paulo Victor

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

14/03/2021

faça algo assim:
insert into tabela (valorcontrato, mensal, valormensal, datavencimento1, datavencimento2, datavencimento3, datavencimento4, datavencimento5)
values (
	@valorcontrato, @mensal, @valormensal,
	dateadd(m, 1, getdate()), -- vencimento 1
	case(@mensal > 1 then dateadd(m, 2, getdate()) else null end), -- vencimento 2
	case(@mensal > 2 then dateadd(m, 3, getdate()) else null end), -- vencimento 3
	case(@mensal > 3 then dateadd(m, 4, getdate()) else null end), -- vencimento 4
	case(@mensal > 4 then dateadd(m, 4, getdate()) else null end)  -- vencimento 5
)
as variáveis iniciados por @ devem ser substituídas pelos conteúdos que você pretende inserir.

dica: esta modelagem não é uma boa prática. o dia que precisar aumentar o número de parcelas você terá de manipular a tabela.
o ideal é gravar a data de início da vigência do contrato e, ter uma outra tabela para guardar o parcelamento ou calcular o parcelamento em tempo real e apresentar em tela.
GOSTEI 1

Mais Respostas

Paulo Victor

Paulo Victor

13/03/2021

oi emerson obrigado pela resposta .
esqueci de falar uma coisa . a minha dificuldade é que a parcela pode chegar até a 90 parcelas
não tem como fazer alguma coisa automática ?
ou tem que fazer case até o 90
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/03/2021

Você pode resolver isso com stored procedure. Daí você manda os parâmetros e a SP resolve a questão, fazendo um laço para preencher os campos de vencimento.
GOSTEI 0
Paulo Victor

Paulo Victor

13/03/2021

Você pode resolver isso com stored procedure. Daí você manda os parâmetros e a SP resolve a questão, fazendo um laço para preencher os campos de vencimento.


obrigado meu amigo . esqueci de responder aqui . fiz com procedure vlw
GOSTEI 0
POSTAR