Een requirement kan zijn om marktbewerking binnen Nederland op de kaart te visualiseren. Men deelt de postcodegebieden van Nederland in op basis van regio. Een regio kan weer bestaat uit ranges met postcodes. Het kan ook zo zijn dat men een bepaalde locatie koppelt aan een postcoderange of een salespersoon die gebied 1234 t/m 4567 moet bewerken.
Omdat de brondata voor deze requirement is opgeslagen als range was het noodzakelijk om de postcoderange te splitsen naar losse regels.
De brondata ziet er als volgt uit:
Vestiging- PostcodeStart – PostcodeEind
1 – 2700 – 2750
2- 2751 – 2800…………etc
Ik moest het resultaat opsplitsen zodat ik voor iedere postcode4 een unieke rij zou krijgen. Met deze data kan ik vervolgens leuke dingen doen in bijvoorbeeld Microsoft Excel met de Maps functie.
1 – 2700
1 – 2701
1 – 2702
….etc
Oplossing in SQL:
CREATE FUNCTION [dbo].[fnDSA2ISA_PostcodeBranch]() RETURNS @MyResult TABLE (PostcodeBranchCode VARCHAR(16), Postcode INT, BranchCode VARCHAR(16), MetaCreatieDatum DATETIME ) AS BEGIN DECLARE @TEMP_PostcodeBranch TABLE( BranchCode VARCHAR(16), PostcodeStart INT, PostcodeEind INT); WITH BS AS( SELECT ROS.KostenPlaatsCode AS BranchCode , PostalCodeStart AS PostcodeStart , PostCodeEnd AS PostcodeEind FROM SourceTable ) INSERT INTO @TEMP_PostcodeBranch (BranchCode, PostcodeStart, PostcodeEind) SELECT * FROM BS; WITH Tens (N) AS (SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1), Hundreds(N) AS (SELECT 1 FROM Tens t1, Tens t2), Millions(N) AS (SELECT 1 FROM Hundreds t1, Hundreds t2), Tally (N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM Millions) INSERT @MyResult SELECT DISTINCT CAST(t1.BranchCode + '_' + CAST(t2.n AS VARCHAR(6)) AS VARCHAR(16)) AS PostcodeBranchCode, t2.N AS Postcode, t1.BranchCode, GETDATE() AS MetaCreatieDatum FROM @TEMP_PostcodeBranch t1 JOIN Tally t2 ON t2.N BETWEEN t1.PostcodeStart AND t1.PostcodeEind; RETURN; END |
Dit artikel maakt deel uit van een reeks:
- Deel 1: Nederlandse postcodetabel + SQL Script voor import
- Deel 2: Postcoderanges opsplitsen naar losse records
- Deel 3: Klantgegevens verrijken met de postcodetabel
- Deel 4: Data visualiseren met coördinaten met Power BI