SQL CPR - borgerens alder
Jeg skal finde en borgers alder ud fra et CPR nummer. Desværre betyder din komplekse regler for cpr (se http://www.cpr.dk/cpr_artikler/Files/Fil1/4225.pdf) at man ikke bare lige kan hente alderen.Indtil nu har jeg lavet dette:
CONVERT(DATETIME,
CASE CONVERT(INT, SUBSTRING(CPR,7,1))
WHEN 0 THEN '19'
WHEN 1 THEN '19'
WHEN 2 THEN '19'
WHEN 3 THEN '19'
WHEN 4 THEN
CASE
WHEN CONVERT(INT, SUBSTRING(CPR,5,2)) < 37 THEN '20'
ELSE '19'
END
WHEN 5 THEN
CASE
WHEN CONVERT(INT, SUBSTRING(CPR,5,2)) < 58 THEN '20'
ELSE '18'
END
WHEN 6 THEN
CASE
WHEN CONVERT(INT, SUBSTRING(CPR,5,2)) < 58 THEN '20'
ELSE '18'
END
WHEN 7 THEN
CASE
WHEN CONVERT(INT, SUBSTRING(CPR,5,2)) < 58 THEN '20'
ELSE '18'
END
WHEN 8 THEN
CASE
WHEN CONVERT(INT, SUBSTRING(CPR,5,2)) < 58 THEN '20'
ELSE '18'
END
WHEN 9 THEN
CASE
WHEN CONVERT(INT, SUBSTRING(CPR,5,2)) < 37 THEN '20'
ELSE '19'
END
END
+ SUBSTRING(CPR,5,2) + '-' + SUBSTRING(CPR,3,2) + '-' + SUBSTRING(CPR,1,2), 102)
Mit problem er - det er for langsom. Det script jeg er igang med skal køres for alle borgere i danmark. Er der nogen der kan optimere dette, uden at lave det om til en stored procedure?