Загрузка данных


WITH
	  cliInv AS (
	  		SELECT 
	  				 r.c_CHECK_OBJ 	 				cliRef
	  				,r.c_CHECK_DATE	 				dtCert
	  				,r.c_CHECK_VAL	 				rezCert
	  				,f.c_DESCRIPTION 				rezCertDescr
	  				,f.c_CODE						rezCode
	  				,r.c_IS_LAST	 				rezIsLast
	  				,first_value(r.c_CHECK_DATE) OVER (PARTITION BY r.c_CHECK_OBJ ORDER BY r.c_CHECK_DATE desc) 	dtCertLast
	  				,first_value(r.c_CHECK_VAL) OVER (PARTITION BY r.c_CHECK_OBJ ORDER BY r.c_CHECK_DATE desc) 		rezCertLast
	  				,first_value(f.c_CODE) OVER (PARTITION BY r.c_CHECK_OBJ ORDER BY r.c_CHECK_DATE desc) 			rezCodeLast
	  				,first_value(f.c_DESCRIPTION ) OVER (PARTITION BY r.c_CHECK_OBJ ORDER BY r.c_CHECK_DATE desc) 	rezCertDescrLast
	  		FROM z#CL_CHECK_RESULT r
	  		JOIN z#P207_TERROR_FLAG f 
	  			ON f.id = r.c_CHECK_VAL

				WHERE r.c_CHECK_DATE >= to_date('01.04.2026','dd.mm.yyyy')
					AND r.c_CHECK_DATE < trunc(sysdate)+1 -- to_date('01.07.2026','dd.mm.yyyy')
					AND r.c_CHECK_TYPE =11580572
					-- AND c_CHECK_VAL IN (11580578, 11580579)
					
					-- AND r.c_CHECK_OBJ = 949400978116 -- убрать
			ORDER BY r.c_CHECK_OBJ, r.c_CHECK_DATE
	  )
	  ,cliAreal AS (
	  		SELECT DISTINCT 
	  					 cliRef  												cliRef
	  					,c.c_FAMILY_CL||' '||c.c_NAME_CL||' '||c.c_SNAME_CL  	cliName
	  					,clie.c_INN 											cliInn
	  					,c.c_DOC#NUM||' '||c.c_DOC#SER							cliPasp
	  					,c.c_DOC#DATE_END										cliPaspEnd
	  					,c.c_DOC#VALID_BEFORE									cliPaspValid
	  		FROM cliInv
	  		JOIN z#CL_PRIV c
	  			ON cliInv.cliRef = c.id
	  		JOIN z#CLIENT clie
	  			ON clie.id = c.id
	  		WHERE rezCert IN (11580578, 11580579) -- найдено совпадение со списком недействиетльности	  		
	  		)  
	  
  	  ,rko AS (
  	  		SELECT 
  	  				 rk.c_CLIENT  			cliRef
  	  				,rk.c_LIMITS_PAY		cliLimPay
  	  				,rk.c_ACCOUNT			accId
  	  				,acc.c_main_v_id		accNum
  	  				,ac.c_DATE_OP			accDtBeg
  	  				,ac.c_DATE_CLOSE		accDtEnd
  	  				
  	  				,d.id					docId
  	  				,d.c_DOCUMENT_NUM   	docNum
  	  				,d.c_ASTR_DATE_PROV 	docProv
  	  				,doc.c_SUM_NT			docSumNt  	  				
  	  				,doc.c_NAZN				docNazn
  	  				
  	  				,acc_kt.c_main_v_id		accKt
  	  				
  	  				,cla.cliName
	  				,cla.cliInn
	  				,cla.cliPasp
	  				,cla.cliPaspEnd
	  				,cla.cliPaspValid
  	  		FROM z#RKO rk
  	  		JOIN cliAreal cla
  	  			ON cla.cliRef = rk.c_CLIENT
  	  		JOIN z#AC_FIN acc -- нужно только те, у кого есть РКО с 40817
  	  			ON acc.id = rk.c_ACCOUNT
  	  			AND acc.c_main_v_id LIKE '40817%'
  	  		JOIN z#ACCOUNT ac
  	  			ON ac.id = acc.id
  	  		LEFT JOIN z#RECORDS rec	
  	  			ON rec.collection_id = acc.c_ARC_MOVE
  	  			AND nvl(rec.c_DT, 0) = 1 -- 40817 по Дт
  	  			AND rec.c_DATE >= to_date('01.04.2026','dd.mm.yyyy')
				AND rec.c_DATE < to_date('01.07.2026','dd.mm.yyyy')
  	  		LEFT JOIN z#MAIN_DOCUM doc
  	  			ON doc.id = rec.c_DOC
  	  			AND doc.STATE_ID = 'PROV'
  	  		LEFT JOIN z#DOCUMENT d 
  	  			ON d.id = doc.id
  	  		LEFT JOIN z#AC_FIN acc_kt 
  	  			ON acc_kt.id = rec.c_ACC_CORR
  	  		ORDER BY rk.c_CLIENT, d.c_ASTR_DATE_PROV
  	  )  	  
	  ,itog AS (
	  		SELECT distinct
	  			 rk.cliRef	
	  			,rk.cliName
	  			,rk.cliInn
	  			,rk.cliPasp
	  			,rk.cliPaspEnd
	  			,rk.cliPaspValid
	  			,first_value(cl.dtCert) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY cl.dtCert desc) 		dtCert
	  			,first_value(cl.rezCert) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY cl.dtCert desc) 		rezCert
	  			,first_value(cl.rezCertDescr) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY cl.dtCert desc) 	rezCertDescr
	  			,first_value(cl.rezCode) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY cl.dtCert desc) 		rezCode
	  			,first_value(cl.rezIsLast) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY cl.dtCert desc) 		rezIsLast
	  			
	  			,rk.accNum
	  			,rk.accDtBeg
	  			,rk.accDtEnd
	  			
	  			,first_value(clLim.c_DATE_BEG) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY clLim.c_DATE_BEG desc) 		limBeg
  	  			,first_value(CASE WHEN nvl(clLim.c_VALID_LIMIT,0)=1  -- если ограничение действует в дату закрытия
  	  								THEN clLim.c_DATE_END 
  	  						 ELSE clLim.c_DATE_END-1 
  	  						 END) OVER (PARTITION BY rk.cliRef, rk.docId ORDER BY clLim.c_DATE_BEG desc) 					limEnd
	  			
	  			,rk.docId
  	  			,rk.docNum
  	  			,rk.docProv
  	  			,rk.docSumNt  	  			
  	  			,rk.docNazn
  	  			
  	  			,rk.accKt
	  			
	  			,cl.dtCertLast
	  			,cl.rezCertLast
	  			,cl.rezCodeLast
	  			,cl.rezCertDescrLast
	  			
	  			,clLim.c_ACCOUNT
	  			,rk.accId
	  			
	  			,rk.cliLimPay
	  			
	  		FROM rko rk
	  		JOIN cliInv cl
	  			ON cl.cliRef = rk.cliRef
	  				AND cl.dtCert <= rk.docProv	  
	  		LEFT JOIN z#RKO_LIMIT_PAY clLim 
  	  			ON clLim.collection_id = rk.cliLimPay
  	  			AND clLim.c_KIND_LIMIT = 6257636 -- STOP_DT  
  	  			-- AND clLim.c_ACCOUNT = rk.accId	
  	  			AND clLim.c_DATE_BEG <= trunc(rk.docProv)  	  			
  	  		ORDER BY rk.cliRef, rk.docProv
	  )
  	  
	,itogAll AS (
			SELECT distinct
					 i.cliName					AS "ФИО"
					,i.cliInn					AS "ИНН"
					,i.cliPasp					AS "Серия номер паспорта"
					,to_char(i.cliPaspEnd,'dd.mm.yyyy')				AS "Дата окончания действия паспорта"
	  			    ,to_char(i.cliPaspValid,'dd.mm.yyyy')			AS "Дата действительности паспорта"
					,to_char(i.dtCert, 'dd.mm.yyyy hh24:mi:ss')		AS "Дата проверки паспорта"
					,i.rezCode					AS "Результат проверки"
					,i.accNum					AS "Номер расчетного счета"
					,to_char(i.accDtBeg,'dd.mm.yyyy')		AS "Дата открытия счета"
					,to_char(i.accDtEnd,'dd.mm.yyyy')		AS "Дата закрытия счета"
					,to_char(CASE WHEN nvl(i.limEnd, to_date('01.01.2059','dd.mm.yyyy')) < trunc(i.docProv) THEN NULL ELSE i.limBeg END,'dd.mm.yyyy')	AS "Дата установки STOP_DT"
					,to_char(CASE WHEN nvl(i.limEnd, to_date('01.01.2059','dd.mm.yyyy')) < trunc(i.docProv) THEN NULL ELSE i.limEnd END,'dd.mm.yyyy')  AS "Дата снятия STOP_DT"
					,to_char(i.docProv, 'dd.mm.yyyy hh24:mi:ss')		AS "Дата операции "
					
					--
					,to_char(first_value(clLimNext.c_DATE_BEG) OVER (PARTITION BY i.cliRef, i.rezCert ORDER BY clLimNext.c_DATE_BEG asc),'dd.mm.yyyy') 	AS "Ближайшая к проверке паспорта дата установки STOP_DT"
  	  				,to_char(first_value(clLimNext.c_DATE_END) OVER (PARTITION BY i.cliRef, i.rezCert ORDER BY clLimNext.c_DATE_BEG asc),'dd.mm.yyyy') 	AS "Ближайшая к проверке паспорта дата снятия STOP_DT"
					
					,i.docNum					AS "Номер документа"
					,i.docSumNt					AS "Сумма документа (в нац. покрытии)"
					,i.accKt					AS "Счет (по кредиту)"
					,i.docNazn					AS "Назначение платежа"
					,to_char(i.dtCertLast, 'dd.mm.yyyy hh24:mi:ss')		AS "Дата последней проверки паспорта"
					,i.rezCodeLast				AS "Результат последней проверки"
				
			FROM itog i
			LEFT JOIN z#RKO_LIMIT_PAY clLimNext 
  	  			ON clLimNext.collection_id = i.cliLimPay
  	  			AND clLimNext.c_KIND_LIMIT = 6257636 -- STOP_DT  
  	  			-- AND clLim.c_ACCOUNT = rk.accId	
  	  			AND clLimNext.c_DATE_BEG >= trunc(i.dtCert)
			WHERE i.rezCert IN (11580578, 11580579)
	)    
  	  
  	  SELECT *  FROM itogAll