DECLARE @data DATE = GETDATE()
DECLARE @Qtd_por_Pessoa INT = 1
;
SELECT
	*
FROM (SELECT
		h.N_PESSOA_PESSOA
	   ,CONCAT(tl.Descricao + ' ', h.S_DCRRUA_HISTENDPESSOA,
	   CONCAT(', ' + h.S_NUMLOGRAD_HISTENDPESSOA,
		CASE COALESCE(TRIM(h.S_DCRCOMPL_HISTENDPESSOA), '')
			WHEN '' THEN ''
			ELSE ' - ' + h.S_DCRCOMPL_HISTENDPESSOA
		END)
	   )
	      AS Endereco
	   ,h.S_DCRBAIRRO_HISTENDPESSOA AS Bairro
	   ,h.S_CEP_HISTENDPESSOA AS CEP
	   ,COALESCE(m.S_NOM_MUN, h.S_DCRMUN_HISTENDPESSOA) AS Municipio
		,COALESCE(m.S_UF_EST, h.S_DCRUF_HISTENDPESSOA) AS UF
	   ,ROW_NUMBER() OVER (PARTITION BY h.N_PESSOA_PESSOA ORDER BY te.Prioridade, h.DT_INIVIG_HISTENDPESSOA DESC) n
	FROM HISTORICOENDERECOPESSOA h
	LEFT JOIN MUNICIPIO m
		ON h.N_COD_MUN = m.N_COD_MUN
	LEFT JOIN vw_N_TIPLOGRAD_HISTENDPESSOA tl
		ON h.N_TIPLOGRAD_HISTENDPESSOA = tl.N_TIPLOGRAD_HISTENDPESSOA
	INNER JOIN vw_S_TIPEND_HISTENDPESSOA te
		ON h.S_TIPEND_HISTENDPESSOA = te.S_TIPEND_HISTENDPESSOA
		AND te.Prioridade IS NOT NULL

	WHERE COALESCE(h.N_COD_PAIS, 1) = 1
	AND @data BETWEEN h.DT_INIVIG_HISTENDPESSOA AND COALESCE(h.DT_FIMVIG_HISTENDPESSOA, { D '2199-12-31' })
) s
WHERE n<=@Qtd_por_Pessoa

