CIVILBDAT i civilståndstabellen

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ... och eventuell kommentar.
Alla värden på CIVILBDAT ska ligga i intervallet 16000000-19800000
select count(*)
from K136.CIVILSTAND
where not CIVILBDAT between 16000000 and 19800000 
      or CIVILBDAT is null
            
0
Om CIVILBTYP = 1 (Födelse) måste personens CIVILBDAT vara detsamma som födelsedatum i sv.PERSON
select count(*)
from K136.CIVILSTAND c
left join sv.PERSON p on c.DDBID = p.DDBID
where c.CIVILBTYP = 1
  and c.CIVILBDAT != p.FODDAT
            
0
Om CIVILBTYP = 2 (Lysning) måste personens CIVILBDAT vara detsamma som lysningsdatum i sv.LV
with lysdatOK as (
Select c.DDBID
from K136.CIVILSTAND c
left join sv.individ i on i.DDBID = c.DDBID
left join sv.lv l on l.postnr = i.postnr
where c.CIVILBDAT = l.LYSDAT
)
select count(*)
from K136.CIVILSTAND a
where CIVILBTYP = 2
  and a.ddbid not in 
    (select t.ddbid from lysdatOK t)
 
0
Om CIVILBTYP = 3 (Vigsel) måste personens CIVILBDAT vara detsamma som vigseldatum i sv.LV eller vigseldatum i HLCIV
with vigdatOK as (
Select c.DDBID, c.CIVIL, c.CIVILNR, c.CIVILBTYP
, c.CIVILBDAT, c.CIVILSTYP, c.CIVILSDAT,h.CIVHLDAT
,i.DDBID i_DDBID, i.POSTNR i_POSTNR, i.INDIVIDTYP i_INDIVIDTYP
, i.KON i_KON, i.CIV i_CIV, i.FNAMNTXT i_FNAMNTXT
, i.ENAMNTXT i_ENAMNTXT, i.FODDAT i_FODDAT
, l.POSTNR l_POSTNR, l.LYSDAT l_LYSDAT, 
case when l.VIGDAT between 17530217 and 17530231 
      then 17530200 
	  else l.VIGDAT 
end as l_VIGDAT
from K136.CIVILSTAND c
left join sv.individ i on i.DDBID = c.DDBID
left join sv.lv l on l.postnr = i.postnr
left join sv.hlciv h on h.postnr = i.postnr
),
vigdatOK_temp as (
select * 
from vigdatOK
where (CIVILBDAT = l_VIGDAT or CIVILBDAT = CIVHLDAT)
)
select count(*)
from K136.CIVILSTAND a
where CIVILBTYP = 3
and a.ddbid not in (select t.ddbid from vigdatOK_temp t)
 
0 Frågan kompenserar för att två personer har ett gemensamt vigseldatum i slutet på februari 1753. På grund av förändring av kalendern detta år anses detta datum vara ologiskt och sätts i programmet till 17530200.
Om CIVILBTYP = 4 (Skilsmässa) måste personens CIVILBDAT vara detsamma som upplösningsdatum i HLCIV och upplösningsorsak ska vara skilsmässa

Alternativt måste partnern ha CIVILBDAT vara detsamma som upplösningsdatum i HLCIV.
with temp as (
Select c.DDBID 
from K136.CIVILSTAND c
left join sv.individ i on i.DDBID = c.DDBID
left join sv.hlciv h on h.postnr = i.postnr
left join sv.rel r on i.ddbid = r.ddbid1 
                  and rtyp = 3 
left join sv.individ ri on r.ddbid2 = ri.ddbid
left join sv.hlciv rhc on rhc.postnr = ri.postnr 
where (c.CIVILBDAT = h.CIVHLDAT and h.UPLORS = 2) or
      (c.CIVILBDAT = rhc.CIVHLDAT and rhc.UPLORS = 2)
)
select count(*)
from K136.CIVILSTAND a
where CIVILBTYP = 4
and a.ddbid not in (select t.ddbid from temp t)
			
0
Om CIVILBTYP = 5 (Partners död) måste måste personens CIVILBDAT vara detsamma som partners dödsdatum
with temp as (
Select c.DDBID
from K136.CIVILSTAND c
left join sv.individ i on i.DDBID = c.DDBID
left join sv.REL r on i.ddbid = r.ddbid1 and r.rtyp = 3 
left join sv.PERSON ppart on ppart.ddbid = r.ddbid2 
where c.CIVILBDAT = ppart.DODDAT 
)
select count(*)
from K136.CIVILSTAND a
where CIVILBTYP = 5
and a.ddbid not in 
  (select t.ddbid from temp t)
			
0