Ir para conteúdo

POWERED BY:

Arquivado

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

KUROL3

Somar depois do select tabelas referencias

Recommended Posts

olá tenho uma duvida não sei se é possivel:

 

select

(select (tabela_estrangeira.porcentagem * tabela_atual.valor) from tabela_estrangeira where tabela_estarngeira.id = tabela_atual.id_estrangeira)

from

tabela_atual

 

no mesmo id existem 3 registros na tabela estrangeira com percentuais 10, 10, 80 é possivel fazer uma soma na tabela_estrangeira e sair um único valor???? achei que colocando SUM entre o select daria certo mas não retorna nada...

aguardo

marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode não estar retornanda nada (ou null) pela sua multiplicação! se ela der null, o restante também vem null.

 

Possível é, mas nao por subselect.

Qual a estrutura de suas tabelas e sua versão do SQL.

 

Abçs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

versao SqlServer 2008 full

 

eu coloquei todos assim isnull(campo, 0)

 

o problema é que o subselect dentro da select vai rodar um loop... sera que isso é permitido no sqlserver?

quando eu coloco:

 

select

(select TOP 1 (tabela_estrangeira.porcentagem * tabela_atual.valor) from

 

top 1 funciona pq ele so pega um registro quando tem mais que um não funciona.

 

marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

subselect só pega um registro mesmo, não tem como fazer um "loop" pelo subselect.

Voce pode tentar fazer com um while.

Posta um exemplo com os dados e o resultado desejado que alguém com ctza ajuda! :P

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou postar parte do select... e tentar explicar...

se o flag for 1 existe a incidência de IR...

caso contrario existira o calculo do imposto + eventos que incide

se o percentual do proprietário atingir alguma faixa é aplicado o calculo e a dedução.

as funções dentro do subselect estão funcionando corretamente o pau é que não consigo somar o sub select.

se alguém souber como somar usando uma while .. seria ideal..

 

abracos

marco

 

 

SELECT
(
CASE WHEN 
".$rs_m_contrato->flag_inside_irrf." = 1
THEN

(
	SELECT 
		(		
			ISNULL(	
					CAST(
							dbo.contrato_irrf(".$rs_m_contrato->contrato_imposto_de_renda.", ((dbo.contrato_irrf_inside(CADCTR2.CtrCod, CADCTR2.CtrSeq, CADCTR2.CtrDV, CADCTR2.CtrParc) + CADCTR2.CtrParcVlr)*(CADCTR4.CtrParcLocdPart/100)))
							as decimal(10, 2)
						)
					, 0)
			)
	FROM
		CADCTR4
	WHERE	
		CADCTR4.CtrCod		= CADCTR2.CtrCod	AND
		CADCTR4.CtrSeq		= CADCTR2.CtrSeq	AND
		CADCTR4.CtrDV		= CADCTR2.CtrDV		AND
		CADCTR4.CtrParc		= CADCTR2.CtrParc
)
ELSE
0
END) AS TOTAL
FROM
CADCTR2
WHERE
CADCTR2.id = 10

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.