Verifiering av BOSDAT, Boende
| Detta villkor är uppfyllt... |
...om denna SQL... |
...returnerar ett antal som ej överstiger gränsvärdet |
Antal |
Gränsvärde |
Kommentar |
| För sista boendeposten där sluttypen är död ska dödsdatumet överensstämma med PERSON.
Finns det personer där detta inte stämmer? |
with temp as (
select b.*, p.doddat,
dense_rank() over(
partition by b.ddbid
order by b.bonr desc) ranknr
from k137.boende b
left join sv.person p on p.ddbid = b.ddbid
)
select count(*)
from temp
where ranknr = 1
and bostyp = 2
and bosdat != doddat
|
OK |
0 |
0 |
|
| Finns det 10 eller fler personer där slutåret för posten är större än personens dödsår? |
select count(*)
from k137.boende b
left join sv.person p on p.ddbid = b.ddbid
where bosdat/10000 > doddat/10000
and doddat > 0
|
OK |
0 |
10 |
|
Finns det 10 eller fler personer där slutåret för posten är mindre än personens födelseår?
Sätter marginal på ETT år då det i källorna finns några fall som släpar efter. |
select count(*)
from k137.boende b
left join sv.person p on p.ddbid = b.ddbid
where bosdat/10000 < foddat/10000 - 1
|
OK |
0 |
10 |
|
Stickprov
Data från källtabeller hämtas med följande SQL-koden nedan. Den hämtar information om barn och mor.
with temp as (
select ddbid1 ddbid_barn, ddbid2 ddbid_mor
from sv.relation
where rtyp = 2 and foraldind = 1
and ddbid1 = 9210913
),
temp2 as (
select 'BARN' relation, ddbid_barn ddbid
from temp
union
select 'MOR' relation, ddbid_mor ddbid
from temp
)
select ddb.nofrs(n.postnr) nofrs, t.relation, t.ddbid, n.MATERIALTYP, i.postnr,
h.nobtyp, h.nobdat, h.nosdat, h.nostyp,
p.foddat foddat_p, p.dopdat dopdat_p, p.doddat doddat_p, p.begdat begdat_p
from temp2 t
left join sv.individ i on i.ddbid = t.ddbid
left join sv.person p on p.ddbid = t.ddbid
join sv.notering n on i.postnr = n.postnr
left join sv.hl h on h.postnr = n.postnr
left join reg.kbsid ks on ks.kbsidid = n.kbsidid
where materialtyp in (1,3,6) and individtyp = 0
order by relation, nobdat, nosdat,p.foddat,p.doddat
Data från boendetabellen hämtas med följande SQL-koden nedan. Den hämtar information om barn och mor.
with temp as (
select ddbid1 ddbid_barn, ddbid2 ddbid_mor
from sv.relation
where rtyp = 2 and foraldind = 1
and ddbid1 = 9210913
),
temp2 as (
select 'BARN' relation, ddbid_barn ddbid
from temp
union
select 'MOR' relation, ddbid_mor ddbid
from temp
)
select *
from temp2 t
left join k137.boende i on i.ddbid = t.ddbid
order by relation, bonr
Barnet har dödsålder 4 dagar och saknar HL-notering. Mamman har HL-notering vid barnets födelse.
Personen har följande data:
Källdata
| NOFRS | RELATION | DDBID | MATERIALTYP | POSTNR | NOBTYP | NOBDAT | NOSDAT | NOSTYP | FODDAT_P | DOPDAT_P | DODDAT_P | BEGDAT_P |
| 83350 | BARN | 9210913 | 3 | 9664101 | | | | | 18280000 | 18280603 | 18280524 | 18281226 |
| 83350 | BARN | 9210913 | 6 | 9683433 | | | | | 18280000 | 18280603 | 18280524 | 18281226 |
| 83350 | MOR | 4862639 | 1 | 9653408 | 2 | 17890000 | 17940000 | 1 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9625899 | 1 | 17950000 | 18050000 | 3 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9622335 | 3 | 18050000 | 18140000 | 3 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9621724 | 3 | 18140000 | 18270000 | 1 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9647997 | 1 | 18280000 | 18400000 | 1 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9650492 | 1 | 18410000 | 18510000 | 1 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9643469 | 1 | 18510000 | 18600000 | 3 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 1 | 9641104 | 3 | 18610000 | 18691024 | 2 | 17890000 | 0 | 18691024 | 18691128 |
| 83350 | MOR | 4862639 | 6 | 9685140 | | | | | 17890000 | 0 | 18691024 | 18691128 |
BOENDE- förväntat
Barnets boende ska följa mammans under barnets levnadstid. Detta blir dock ett negativt intervall.
| RELATION | DDBID | BOREGPREFIX | DDBID | BONR | BOBTYP | BOBDAT | BOSTYP | BOSDAT |
| BARN | 9210913 | NIL | 9210913 | 1 | 2 | 18280530 | 2 | 18280000 |
| MOR | 4862639 | NIL | 4862639 | 1 | 2 | 17890000 | 2 | 18691024 |
Kontroll!
| Detta villkor är uppfyllt |
om denna SQL-sats |
returnerar |
| Barnet ska ha en notering i BOENDE. |
select count(*)
from k137.boende
where ddbid in (9210913)
|
1 |
| För denna notering i BOENDE ska följande gälla: |
select count(*)
from k137.boende
where ddbid in (9210913)
and boregprefix = 'NIL'
and bonr = 1
and bobtyp = 2
and bobdat = 18280530
and bostyp = 2
and bosdat = 18280000
|
1 |
| För noteringen i BOENDE ska BOBTYP vara 2. |
select bobtyp
from k137.boende
where ddbid in (9210913)
and bonr = 1
|
2 |
| För noteringen i BOENDE ska BOBDAT vara 18280530. |
select bobdat
from k137.boende
where ddbid in (9210913)
and bonr = 1
|
18280530 |
| För noteringen i BOENDE ska BOSTYP vara 2. |
select bostyp
from k137.boende
where ddbid in (9210913)
and bonr = 1
|
2 |
| För noteringen i BOENDE ska BOSDAT vara 18280000. |
select bosdat
from k137.boende
where ddbid in (9210913)
and bonr = 1
|
18280000 |