Verifiering av FLYTTRIKTNING, Flytt

FLYTTRIKTNING - områden

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ett antal som ej överstiger gränsvärdet Antal Gränsvärde Kommentar
Om FLYTTRIKTNING = 1 (Inflyttning, dvs. från område utanför länkat område) får FRNFRS och TILFRS INTE vara församlingar i samma länkade området, dvs. REGPREFIX MÅSTE skilja sig åt.

REGPREFIX har modifierats så att församlingar som inte har regionlänkats får REGPREFIX = FRSPREFIX.

Det finns dock undantag: när källorna är inkonsekventa går det inte att bestämma hur personerna har flyttat. I ca 5% av inflyttningarna till det länkade området indikerar källorna att det egentligen har skett en lokalflyttning.
with
-- temptabell ej_reglankade_frs:
-- används för att koppla ihop länkade områden
-- -- hämtar församlingar som inte ingår i ett
-- -- -- länkat område.
ej_reglankade_frs as (
select frs,  max(fas) maxfas
from reg.projekt p
left join reg.projektfas pf
  on pf.projektid = p.projektid
group by frs
having max(fas) >= 9
),
-- temptabell mod_dedikkatalog:
-- används för att koppla ihop länkade områden
-- -- sätt REGPREFIX motsvarande länkat område.
-- -- REGPREFIX för församlingar i LIN och NIL
-- -- -- motsvarar alltså FRSPREFIX.
mod_dedikkatalog as (
select dedik,regprefix,
case when dedik in (
    select frs from ej_reglankade_frs
    ) then d.regprefix
  else d.frsprefix
end as mod_regprefix
from kod.dedikkatalog d
left join ej_reglankade_frs a
  on a.frs = d.dedik
),
-- temptabell FLYTTRIKT_1_SAMMAPREFIX:
-- väljer ut poster där REGPREFIX är densamma för
-- -- TILFRS och FRNFRS, dvs. personen flyttar
-- -- från och till samma länkade område.
-- Det ska inte kunna förekomma men det finns undantag.
FLYTTRIKT_1_SAMMAPREFIX as (
select fl.*, d1.regprefix frnregprefix,
  d2.regprefix tilregprefix
from k137.FLYTT fl
left join mod_dedikkatalog d1
        on fl.frnfrs = d1.dedik
left join mod_dedikkatalog d2
        on fl.tilfrs = d2.dedik
where flyttriktning = 1
and d1.mod_regprefix = d2.mod_regprefix
),
-- temptabell sammanslagning_HL_FD:
-- slår samman ddbid, frnfrs och nobdat från HL och
-- -- ddbid, fltfrs och fltdat från FD för att
-- -- kunna jämföras med poster från FLYTT
sammanslagning_HL_FD as (
select ddbid, frnfrs frs, coalesce(nobdat, nosdat) datum
from sv.hl hl
join sv.individ i on i.postnr = hl.postnr and individtyp = 0
union
select ddbid, fltfrs frs, fltdat datum
from sv.fl fl
join sv.individ i on i.postnr = fl.postnr
join sv.notering n on n.postnr = fl.postnr
 and materialtyp = 2 and individtyp = 0
),
jmfr as (
select ddbid, frnfrs, tildat
from FLYTTRIKT_1_SAMMAPREFIX
except
select ddbid, frs, datum
from sammanslagning_HL_FD
)
select count(*)
from jmfr
          
OK 110 400
När FLYTTRIKTNING = 1 (inflyttning) ska TILFRS vara en församling inom någon av de länkade områdena i databasen.

Finns det några församlingar (TILFRS) som inte har ett REGPREFIX i DEDIKKATALOG?
select count(*)
from k137.FLYTT f
where FLYTTRIKTNING = 1
  and tilfrs not in (
    select dedik
    from kod.dedikkatalog
    where regprefix is not null
    )
      
OK 0 0
Om FLYTTRIKTNING = 2 (Utflyttning, dvs. till område utanför länkat område) får FRNFRS och TILFRS INTE vara församlingar i samma länkade området, dvs. REGPREFIX MÅSTE skilja sig åt.

REGPREFIX har modifierats så att församlingar som inte har regionlänkats får REGPREFIX = FRSPREFIX.

Det finns dock undantag: när källorna är inkonsekventa går det inte att bestämma hur personerna har flyttat. I ca 5% av inflyttningarna till det länkade området indikerar källorna att det egentligen har skett en lokalflyttning.
with
-- temptabell ej_reglankade_frs:
-- används för att koppla ihop länkade områden
-- -- hämtar församlingar som inte ingår i ett
-- -- -- länkat område.
ej_reglankade_frs as (
select frs,  max(fas) maxfas
from reg.projekt p
left join reg.projektfas pf
  on pf.projektid = p.projektid
group by frs
having max(fas) >= 9
),
-- temptabell mod_dedikkatalog:
-- används för att koppla ihop länkade områden
-- -- sätt REGPREFIX motsvarande länkat område.
-- -- REGPREFIX för församlingar i LIN och NIL
-- -- -- motsvarar alltså FRSPREFIX.
mod_dedikkatalog as (
select dedik,regprefix,
case when dedik in (
    select frs from ej_reglankade_frs
    ) then d.regprefix
  else d.frsprefix
end as mod_regprefix
from kod.dedikkatalog d
left join ej_reglankade_frs a
  on a.frs = d.dedik
),
-- temptabell FLYTTRIKT_2_SAMMAPREFIX:
-- väljer ut poster där REGPREFIX är densamma för
-- -- TILFRS och FRNFRS, dvs. personen flyttar
-- -- från och till samma länkade område.
-- Det ska inte kunna förekomma men det finns undantag.
FLYTTRIKT_2_SAMMAPREFIX as (
select fl.*, d1.regprefix frnregprefix,
  d2.regprefix tilregprefix
from k137.FLYTT fl
left join mod_dedikkatalog d1
        on fl.frnfrs = d1.dedik
left join mod_dedikkatalog d2
        on fl.tilfrs = d2.dedik
where flyttriktning = 2
and d1.mod_regprefix = d2.mod_regprefix
),
-- temptabell sammanslagning_HL_FD:
-- slår samman ddbid, tilfrs och nosdat från HL och
-- -- ddbid, fltfrs och fltdat från FD för att
-- -- kunna jämföras med poster från FLYTT
sammanslagning_HL_FD as (
select ddbid, tilfrs frs, coalesce(nosdat, nobdat) datum
from sv.hl hl
join sv.individ i on i.postnr = hl.postnr and individtyp = 0
union
select ddbid, fltfrs frs, fltdat datum
from sv.fl fl
join sv.individ i on i.postnr = fl.postnr
join sv.notering n on n.postnr = fl.postnr
 and materialtyp = 4 and individtyp = 0
),
jmfr as (
select ddbid, tilfrs, frndat
from FLYTTRIKT_2_SAMMAPREFIX
except
select ddbid, frs, datum
from sammanslagning_HL_FD
)
select count(*)
from jmfr
          
OK 246 400
När FLYTTRIKTNING = 2 (utflyttning) ska FRNFRS vara en församling inom någon av de länkade områdena i databasen.

Finns det några församlingar (FRNFRS) som inte har ett REGPREFIX i DEDIKKATALOG?
select count(*)
from k137.FLYTT f
where FLYTTRIKTNING = 2
  and frnfrs not in (
    select dedik
    from kod.dedikkatalog
    where regprefix is not null
    )
      
OK 0 0
Om FLYTRIKTNING = 3 (Alla flyttningar inom samma länkade område, alltså även om församlingarna är olika) måste FRNFRS och TILFRS vara församlingar i det länkade området, dvs. REGPREFIX får inte skilja sig åt.

REGPREFIX har modifierats så att församlingar som inte har regionlänkats får REGPREFIX = FRSPREFIX.
with ej_reglankade_frs as (
select frs,  max(fas) maxfas
from reg.projekt p
left join reg.projektfas pf
  on pf.projektid = p.projektid
group by frs
having max(fas) >= 9
),
mod_dedikkatalog as (
select dedik,regprefix,
case when dedik in (
    select frs from ej_reglankade_frs
    ) then d.regprefix
  else d.frsprefix
end as mod_regprefix
from kod.dedikkatalog d
left join ej_reglankade_frs a
  on a.frs = d.dedik
)
select count(*)
from k137.flytt fl
left join mod_dedikkatalog d1
        on fl.frnfrs = d1.dedik
left join mod_dedikkatalog d2
        on fl.tilfrs = d2.dedik
where flyttriktning = 3
  and d1.regprefix != d2.regprefix
      
OK 0 0
När FLYTTRIKTNING = 3 (omflyttning) och FLYTTYP = 1 (flyttning mellan orter i samma församling) ska TILFRS ska vara samma församling som FRNFRS.

Finns det några församlingar (TILFRS) som inte är densamma som FRNFRS?
select count(*)
from k137.FLYTT f
where FLYTTRIKTNING = 3 and flyttyp = 1
  and tilfrs != frnfrs
      
OK 0 0
När FLYTTRIKTNING = 3 (omflyttning) och FLYTTYP = 2 (flyttning mellan församlingar inom samma länkade region) ska TILFRS ska inte vara samma församling som FRNFRS.

Finns det några församlingar (TILFRS) som är densamma som FRNFRS?
select count(*)
from k137.FLYTT f
where FLYTTRIKTNING = 3 and flyttyp = 2
  and tilfrs = frnfrs
      
OK 0 0
När FLYTTRIKTNING = 3 (omflyttning) och FLYTTYP = 1 (omflyttning mellan orter i samma församling) måste TILFRS vara detsamma som FRNFRS.

Finns det några församlingar där TILFRS INTE är detsamma som FRNFRS?
select count(*)
from k137.FLYTT f
where FLYTTRIKTNING = 3 and flyttyp = 1
  and tilfrs != frnfrs
      
OK 0 0
När FLYTTRIKTNING = 3 (omflyttning) och FLYTTYP = 1 (omflyttning mellan orter i samma församling) måste TILORTKOD skilja sig från FRNORTKOD.

Finns det några församlingar där TILORTKOD är detsamma som FRNORTKOD?
select count(*)
from k137.FLYTT f
where FLYTTRIKTNING = 3 and flyttyp = 1
  and tilortkod = frnortkod
      
OK 0 0

FLYTTRIKTNING - FLYTTYP

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ett antal som ej överstiger gränsvärdet Antal Gränsvärde Kommentar
Om FLYTTRIKTNING = 1 (Inflyttning) måste FLYTTYP vara 3 (Inrikesflyttning utanför länkat område), 4 (Utrikesflyttning inom norden) eller 5 (Utrikesflyttning utanför norden).
select count(*)
from k137.flytt
where flyttriktning = 1
and flyttyp not in (3,4,5)
      
OK 0 0
Om FLYTTRIKTNING = 2 (utflyttning) måste FLYTTYP vara 3 (Inrikesflyttning utanför länkat område), 4 (Utrikesflyttning inom norden) eller 5 (Utrikesflyttning utanför norden).
select count(*)
from k137.flytt
where flyttriktning = 2
and flyttyp not in (3,4,5)
      
OK 0 0
Om FLYTTRIKTNING = 3 (Omflyttning) måste FLYTTYP vara 1 (Omflyttning mellan orter i samma församling) eller 2 (Flyttning mellan församlingar inom länkat område).
select count(*)
from k137.flytt
where flyttriktning = 3
and flyttyp not in (1,2)
      
OK 0 0

Inflyttning - FLYTT - BOORT

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ett antal som ej överstiger gränsvärdet Antal Gränsvärde Kommentar
Om en person flyttar inom Sverige in i länkat område ska FLYTTRIKTNING = 1 (Inflyttning), FLYTTYP = 3 (Inrikesflyttning utanför länkat område) och BOBTYP = 5 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, TILDAT i FLYTT.
with temp as (
select ddbid, bobdat
from k137.boort
where
  bobtyp = 5
except
select ddbid, tildat
from k137.flytt
where
  flyttyp = 3 and flyttriktning = 1
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar inom Sverige in i länkat område ska FLYTTRIKTNING = 1 (Inflyttning), FLYTTYP = 3 (Inrikesflyttning utanför länkat område) och BOBTYP = 5 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, TILDAT i FLYTT.
with temp as (
select ddbid, tildat
from k137.flytt
where
  flyttyp = 3 and flyttriktning = 1
except
select ddbid, bobdat
from k137.boort
where
  bobtyp = 5
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar från annat Nordiskt land in i länkat område ska FLYTTRIKTNING = 1 (Inflyttning), FLYTTYP = 4 (Utrikesflyttning inom norden) och BOBTYP = 6 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, TILDAT i FLYTT.
with temp as (
select ddbid, bobdat
from k137.boort
where
  bobtyp = 6
except
select ddbid, tildat
from k137.flytt
where
  flyttyp = 4 and flyttriktning = 1
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar från annat Nordiskt land in i länkat område ska FLYTTRIKTNING = 1 (Inflyttning), FLYTTYP = 4 (Utrikesflyttning inom norden) och BOBTYP = 6 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, TILDAT i FLYTT.
with temp as (
select ddbid, tildat
from k137.flytt
where
  flyttyp = 4 and flyttriktning = 1
except
select ddbid, bobdat
from k137.boort
where
  bobtyp = 6
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar till ett land utanför Norden från ett länkat område ska FLYTTRIKTNING = 1 (Inflyttning), FLYTTYP = 5 (Utrikesflyttning utanför norden) och BOBTYP = 7 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, TILDAT i FLYTT.
with temp as (
select ddbid, bobdat
from k137.boort
where
  bobtyp = 7
except
select ddbid, tildat
from k137.flytt
where
  flyttyp = 5 and flyttriktning = 1
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar till ett land utanför Norden från ett länkat område ska FLYTTRIKTNING = 1 (Inflyttning), FLYTTYP = 5 (Utrikesflyttning utanför norden) och BOBTYP = 7 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, TILDAT i FLYTT.
with temp as (
select ddbid, tildat
from k137.flytt
where
  flyttyp = 5 and flyttriktning = 1
except
select ddbid, bobdat
from k137.boort
where
  bobtyp = 7
)
select count(*)
from temp
      
OK 0 0

Utflyttning - FLYTT - BOORT

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ett antal som ej överstiger gränsvärdet Antal Gränsvärde Kommentar
Om en person flyttar inom Sverige ut ur länkat område ska FLYTTRIKTNING = 2 (Utflyttning), FLYTTYP = 3 (Inrikesflyttning utanför länkat område) och BOBTYP = 5 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, FRNDAT i FLYTT.
with temp as (
select ddbid, frndat
from k137.flytt
where
  flyttyp = 3 and flyttriktning = 2
except
select ddbid, bosdat
from k137.boort
where
  bostyp = 5
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar inom Sverige ut ur länkat område ska FLYTTRIKTNING = 2 (Utflyttning), FLYTTYP = 3 (Inrikesflyttning utanför länkat område) och BOBTYP = 5 i BOORT.

DDBID, BOBDAT i boort ska då motsvaras av DDBID, FRNDAT i FLYTT.
with temp as (
select ddbid, bosdat
from k137.boort
where
  bostyp = 5
except
select ddbid, frndat
from k137.flytt
where
  flyttyp = 3 and flyttriktning = 2
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar till annat Nordiskt land ut ur länkat område ska FLYTTRIKTNING = 2 (Utflyttning), FLYTTYP = 4 (Utrikesflyttning inom norden) och BOSTYP = 6 i BOORT.

DDBID, BOSDAT i boort ska då motsvaras av DDBID, FRNDAT i FLYTT.
with temp as (
select ddbid, bosdat
from k137.boort
where
  bostyp = 6
except
select ddbid, frndat
from k137.flytt
where
  flyttyp = 4 and flyttriktning = 2
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar till annat Nordiskt land ut ur länkat område ska FLYTTRIKTNING = 2 (Utflyttning), FLYTTYP = 4 (Utrikesflyttning inom norden) och BOSTYP = 6 i BOORT.

DDBID, BOSDAT i boort ska då motsvaras av DDBID, FRNDAT i FLYTT.
with temp as (
select ddbid, frndat
from k137.flytt
where
  flyttyp = 4 and flyttriktning = 2
except
select ddbid, bosdat
from k137.boort
where
  bostyp = 6
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar till ett land utanför Norden ut ur länkat område ska FLYTTRIKTNING = 2 (Utflyttning), FLYTTYP = 5 (Utrikesflyttning utanför norden) och BOSTYP = 7 i BOORT.

DDBID, BOSDAT i boort ska då motsvaras av DDBID, FRNDAT i FLYTT.
with temp as (
select ddbid, bosdat
from k137.boort
where
  bostyp = 7
except
select ddbid, frndat
from k137.flytt
where
  flyttyp = 5 and flyttriktning = 2
)
select count(*)
from temp
      
OK 0 0
Om en person flyttar till ett land utanför Norden ut ur länkat område ska FLYTTRIKTNING = 2 (Utflyttning), FLYTTYP = 5 (Utrikesflyttning utanför norden) och BOSTYP = 7 i BOORT.

DDBID, BOSDAT i boort ska då motsvaras av DDBID, FRNDAT i FLYTT.
with temp as (
select ddbid, frndat
from k137.flytt
where
  flyttyp = 5 and flyttriktning = 2
except
select ddbid, bosdat
from k137.boort
where
  bostyp = 7
)
select count(*)
from temp
      
OK 0 0