WITH RECURSIVE tmp_titulos_financeiro(id_titulo_raiz, 
	id_titulo_financeiro,
	id_titulo_filho, 
	id_titulo_pai,
	fatura_global) AS 
	(
	SELECT 	tf.id_titulo_financeiro AS id_titulo_raiz,
			tf.id_titulo_financeiro,
			tf.id_titulo_filho,
			tf.id_titulo_pai,		
			CASE WHEN natureza_titulo IN (221) THEN 'S' ELSE 'N' END  AS fatura_global
	FROM	titulo_financeiro AS tf
	WHERE tf.id_titulo_financeiro IN (:Id)

	UNION ALL

	SELECT	t.id_titulo_raiz,
			tf.id_titulo_financeiro,
			tf.id_titulo_filho,
			tf.id_titulo_pai,	
			CASE WHEN tf.natureza_titulo IN (221) THEN 'S' ELSE 'N' END  AS fatura_global
	FROM	titulo_financeiro AS tf
		INNER JOIN tmp_titulos_financeiro AS t ON (tf.id_titulo_financeiro = t.id_titulo_filho OR tf.id_titulo_pai = t.id_titulo_financeiro))

SELECT	tf.id_titulo_financeiro,
		tf.data_emissao,
		tf.data_vencimento,
		olvs.titulo AS titulo_situacao,
		tf.valor_titulo,
		tf.data_liquidacao,
		tf.valor_liquidado
FROM	tmp_titulos_financeiro AS ttf
	INNER JOIN titulo_financeiro AS tf ON(ttf.id_titulo_financeiro = tf.id_titulo_financeiro)
	LEFT OUTER JOIN sis_opcao_lista_valor AS olvs ON (olvs.id = tf.situacao AND olvs.id_lista_valor = 'CEDBEA3BCD98445F98C29C5DAC4B809D')
WHERE ttf.fatura_global = 'N'