1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| -- INSS WITH OFFICIAL ADDRESS
-- IN BELGIUM
select
P_OFF.INSS as INSS
, nvl(A_OFF.STREET_ZIPCODE,A_OFF.ZIPCODE) AS ZIP
from
PERSONS P_OFF
, PERIODIC_ADDRESSES PA_OFF
, ADDRESSES A_OFF
where
P_OFF.PERSON_ID = PA_OFF.OFF_ADDR_PERSON_ID
and PA_OFF.ADDRESS_TYPE = 'OFFICIAL'
and CURRENT_DATE between PA_OFF.START_DATE and nvl(PA_OFF.END_DATE,'31/12/9999')
and PA_OFF.ADDRESS_ID = A_OFF.ADDRESS_ID
and A_OFF.type = 'STRUCTURED'
union
-- INSS WITH FUNCTIONAL ADDRESS
-- DELETE IF DBLE ADDRESS OPEN
-- IN BELGIUM
-- NOT in INSS_OFF
select
INSS_FUNC
, ZIP_FUNC
from
(
select P_FUNC.INSS AS INSS_FUNC
, nvl(A_FUNC.STREET_ZIPCODE,A_FUNC.ZIPCODE) AS ZIP_FUNC
, PA_FUNC.START_DATE
, row_number() over(partition by P_FUNC.INSS order by PA_FUNC.START_DATE desc) as rn
from
PERSONS P_FUNC
, PERIODIC_ADDRESSES PA_FUNC
, ADDRESSES A_FUNC
where
P_FUNC.PERSON_ID = PA_FUNC.FUN_ADDR_PERSON_ID
and PA_FUNC.ADDRESS_TYPE = 'FUNCTIONAL'
and CURRENT_DATE between PA_FUNC.START_DATE and nvl(PA_FUNC.END_DATE,'31/12/9999')
and PA_FUNC.ADDRESS_ID = A_FUNC.ADDRESS_ID
and A_FUNC.type = 'STRUCTURED'
AND P_FUNC.INSS NOT IN (
select
P_OFF.INSS as INSS_OFF
from
PERSONS P_OFF
, PERIODIC_ADDRESSES PA_OFF
, ADDRESSES A_OFF
where
P_OFF.PERSON_ID = PA_OFF.OFF_ADDR_PERSON_ID
and PA_OFF.ADDRESS_TYPE = 'OFFICIAL'
and CURRENT_DATE between PA_OFF.START_DATE and nvl(PA_OFF.END_DATE,'31/12/9999')
and PA_OFF.ADDRESS_ID = A_OFF.ADDRESS_ID
and A_OFF.type = 'STRUCTURED'
)
)
where rn=1
; |
Partager