CIVILSDAT i civilståndstabellen

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ett antal som ej överstiger gränsvärdet Antal Gränsvärde ... och eventuell kommentar.
Alla värden på CIVILSDAT ska ligga i intervallet 16000000-19800000
select count(*)
from K136.CIVILSTAND
where not CIVILSDAT between 16000000 and 19800000 
      or CIVILSDAT is null
            
OK 0 0
CIVILSDAT ska inte kunna vara mindre än CIVILBDAT.
select count(*)
from k136.CIVILSTAND
where ddb.fixdatum(CIVILSDAT,2) < ddb.fixdatum(CIVILBDAT,1)
            
OK 119 200 Det finns ett antal personer som av olika orsaker får ett slutdatum som är före startdatum, t.ex. personer som har dödsdatum före födelsedatum
Om CIVILSTYP = 1 (Egen död) måste personens CIVILSDAT vara detsamma som dödsdatum i sv.PERSON
select count(*)
from K136.CIVILSTAND c
left join sv.PERSON p on c.DDBID = p.DDBID
where c.CIVILSTYP = 1
  and c.CIVILSDAT != p.DODDAT
            
OK 0 0
Om CIVILSTYP = 2 (Lysning) måste personens CIVILSDAT 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.CIVILSDAT = l.LYSDAT
)
select count(*)
from K136.CIVILSTAND a
where CIVILSTYP = 2
  and a.ddbid not in 
    (select t.ddbid from lysdatOK t)
 
OK 0 0
Om CIVILSTYP = 3 (Vigsel) måste personens CIVILSDAT vara detsamma som vigseldatum i sv.LV eller vigseldatum i HLCIV
with vigdatOK as (
Select c.DDBID,h.CIVHLDAT,c.CIVILSDAT,l.vigdat,
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 (CIVILSDAT = l_VIGDAT or CIVILSDAT = CIVHLDAT)
)
select count(*)
from K136.CIVILSTAND a
where CIVILSTYP = 3
and a.ddbid not in (select t.ddbid from vigdatOK_temp t)
 
OK 0 0 Frågan kompenserar för att en person har ett 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 CIVILSTYP = 4 (Skilsmässa) måste personens CIVILSDAT vara detsamma som upplösningsdatum i HLCIV och upplösningsorsak ska vara skilsmässa

Alternativt måste partnern ha CIVILSDAT 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.lv l on l.postnr = i.postnr
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.CIVILSDAT = h.CIVHLDAT and h.UPLORS = 2) or
      (c.CIVILSDAT = rhc.CIVHLDAT and rhc.UPLORS = 2)
)
select count(*)
from K136.CIVILSTAND a
where CIVILSTYP = 4
and a.ddbid not in 
  (select t.ddbid from temp t)
			
OK 0 0
Om CIVILSTYP = 5 (Partners död) måste måste personens CIVILSDAT 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.CIVILSDAT = ppart.DODDAT 
)
select count(*)
from K136.CIVILSTAND a
where CIVILSTYP = 5
and a.ddbid not in 
  (select t.ddbid from temp t)
			
OK 0 0