Ir para conteúdo

POWERED BY:

Arquivado

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

pedroasp_2006

como fazer o campo calculado no sql server 2005

Recommended Posts

Boas a todos!!

É assim eu queria calcular o total_pagar, que é o resultado da soma do (calculo da idade) + a DUR_CONTRACTO + VALOR_BASE.

As tabelas estao aqui: TABELAS

Antecipadament muito obrigado!!

Abraço

 

nota:Eu queria fazer calculo do valor_base + dur_contracto + idade(calculo da data_nasc), e que esse resultado apareça no campo total_pagar da tabela preços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para calcular a idade você pode fazer uma select como a abaixo... ela ainda precisa ser refinada para os casos do mês ser o mesmo da data atual:

 

SELECT CASE WHEN (DATEPART(MM,'1970-10-01 00:00:00') > DATEPART(MM,GETDATE())) THEN DATEDIFF(YYYY, '1970-10-01 00:00:00', GETDATE())-1
ELSE DATEDIFF(YYYY, '1970-10-01 00:00:00', GETDATE()) END AS ANOS

Com base no sql acima acho que você consegue montar o resto da sua consulta não é?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para calcular a idade você pode fazer uma select como a abaixo... ela ainda precisa ser refinada para os casos do mês ser o mesmo da data atual:

 

SELECT CASE WHEN (DATEPART(MM,'1970-10-01 00:00:00') > DATEPART(MM,GETDATE())) THEN DATEDIFF(YYYY, '1970-10-01 00:00:00', GETDATE())-1
ELSE DATEDIFF(YYYY, '1970-10-01 00:00:00', GETDATE()) END AS ANOS

Com base no sql acima acho que você consegue montar o resto da sua consulta não é?

 

[]'s

 

O maior problema é o resto da consulta, pork a idade j consegui fazer!!??

Será que me podes ajudar no resto da consulta???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como na imagem que deixou não fica muito claro o que é primary key e o que é chave estrangeira, fiz a select abaixo por dedução e interpretação das imagens.

 

SELECT N_CLIENTE,  PRODUTOS.COD_PRODUTO,
(CASE WHEN (DATEPART(MM,DATA_NASC) > DATEPART(MM,GETDATE())) THEN DATEDIFF(YYYY, DATA_NASC, GETDATE())-1
	 WHEN ((DATEPART(MM,DATA_NASC) = DATEPART(MM,GETDATE())) AND (DATEPART(DD,DATA_NASC) > DATEPART(DD,GETDATE()))) THEN DATEDIFF(YYYY, DATA_NASC, GETDATE())-1
ELSE DATEDIFF(YYYY, DATA_NASC, GETDATE()) END) + DUR_CONTRACTO + VALOR_BASE AS TOTAL
FROM CLIENTES WITH(NOLOCK)
INNER JOIN PRECOS WITH(NOLOCK) ON (PRECOS.N_CLIENTE = N_CLIENTE)
INNER JOIN PRODUTOS WITH(NOLOCK) ON (PRODUTOS.N_CLIENTE = N_CLIENTE AND PRODUTOS.COD_PRODUTO = PRECOS.COD_PRODUTO)
WHERE N_CLIENTE = 1 AND PRODUTOS.COD_PRODUTO = 2

Ps: tem que ver a questão dos filtros que irá usar como fica.

Ps2: tem que analisar se a ordem dos joins está correta e refinar ela pra atender suas necessidades.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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