Contagem de Agregação e divisão

Olá
Tenho 3 tabelas relacionadas
1 tabela FinanciamentoBem
Campos:
OidFinancimaentoBem
OidDocumento
OidBem

2 Tabela FinanciamentoMov
Campos:
OidfinancimentoMov
OidDocumento
DtVencimento
ValorJurosMes

3 tabela vEquipamentoIdentificacao
OidBem
Identificacao

Na tabela FinanciamentoMov consta todos os bens que possuem financiamento e cada OidDocumento possui um ou mas bens no mesmo documento, preciso quantificar quantos bens estão no mesmo OidDocumento, após identificar o numero de bens no mesmo OidDocumento tenho que pegar o valorJurosMes e dividir pelo numero de bens encontrando o valor de parcela de cada bem.

Esse código me retorna a quantidade de OIDFinanciamentoBem mas quando incluo os campos OidBem, Identificacao no GROUP BY os valores de agregação ficam individuais

SELECT DISTINCT
COUNT(OIDFinanciamentoBem)Numero,
FinanciamentoMov.OIDDocumento,
ValorJurosMes/COUNT(DISTINCT FinanciamentoBem.OIDBem)as parcela,
DtVencimento
FROM FinanciamentoMov
INNER JOIN FinanciamentoBem
ON FinanciamentoBem.OIDDocumento = FinanciamentoMov.OIDDocumento
INNER JOIN vEquipamentoSomenteIdentificacao
on FinanciamentoBem.OIDBem = vEquipamentoSomenteIdentificacao.OIDBem
WHERE FinanciamentoMov.OIDDocumento = FinanciamentoMov.OIDDocumento /FinanciamentoBem.OIDDocumento/ AND DtVencimento BETWEEN '2023/01/01' AND GETDATE ()
GROUP BY
FinanciamentoMov.OIDDocumento,
ValorJurosMes,
DtVencimento

Difficult without test data! Try:
(Difícil sem dados de teste! Tentar:)

SELECT DISTINCT
	COUNT(B.OIDFinanciamentoBem) OVER (PARTITION BY M.OIDDocumento, M.ValorJurosMes, M.DtVencimento) AS Numero
	,M.OIDDocumento
	,M.ValorJurosMes
		/ (DENSE_RANK() OVER (PARTITION BY M.OIDDocumento, M.ValorJurosMes, M.DtVencimento ORDER BY B.OIDBem)
			+ DENSE_RANK() OVER (PARTITION BY M.OIDDocumento, M.ValorJurosMes, M.DtVencimento ORDER BY B.OIDBem DESC)
			- 1) AS Parcela
	,M.DtVencimento
	,B.OIDBem
	,V.Identificacao
FROM FinanciamentoMov M
	JOIN FinanciamentoBem B
		ON B.OIDDocumento = M.OIDDocumento
	JOIN vEquipamentoSomenteIdentificacao V
		ON B.OIDBem = V.OIDBem
WHERE M.DtVencimento >= '2023';
1 Like

Olá,
Primeiramente agradeço por sua resposta! Ficou perfeito! fechou certinho!
Muito obrigado!