Una herramienta para calcular la distancia entre dos distancias postales del Reino Unido y encontrar una lista de todos los códigos postales dentro de un cierto número de kilómetros.
Haga clic a continuación para ver el video tutorial:
Para encontrar una lista de códigos postales dentro de X kilómetros, use la función de tabla postCodesWithinXkm
. Por ejemplo, para encontrar todos los códigos postales con 5 kilómetros de SW1A 0AA, puede utilizar el siguiente código.
SELECT * FROM postCodesWithinXkm('SW1A 0AA',5)
Para determinar la distancia entre dos códigos postales, utilice la función escalar distanceBetweenPostCodes
. Por ejemplo: para encontrar la distancia entre SW1A 0AA y SE10 0DX, puede utilizar el siguiente código.
SELECT dbo.distanceBetweenPostCodes('SW1A 0AA','SE10 0DX')
Para encontrar una lista de todos los códigos postales y su distancia a una publicación en particular, use la función de tabla distanceToAllPostCodes
SELECT * FROM dbo.distanceToAllPostCodes('SW1A 0AA') a
Supongamos que tenemos una base de datos de CRM que contiene una tabla Prospects
que contiene una lista de direcciones de clientes potenciales y una tabla Branch
que contiene todas las direcciones de nuestras sucursales.
postCodesWithinXkm
Si una sucursal en particular estuviera realizando una promoción y queremos notificar a todos los clientes potenciales dentro de un radio de 5 km de la sucursal, podríamos usar el siguiente código para obtener una lista de todos los clientes potenciales con los que debemos contactar.
SELECT a.ProspectName, a.ProspectEmail, a.PostCode
FROM CRM..Prospects a
INNER JOIN postCodesWithinXkm('PO19 1EL',5) b on a.PostCode = b.PostCode
El resultado sería algo como:
Nombre del prospecto | Cliente potencialCorreo electrónico | Código postal |
---|---|---|
Acme Corp. Ltd. | [email protected] | PO18 0AE |
Herramientas4u Ltd | [email protected] | PO20 2GU |
las carnes de hal | [email protected] | PO19 7EY |
distanceBetweenPostCodes
Podríamos usar el siguiente código para determinar la cantidad de prospectos dentro de un radio de 5 km de cada una de nuestras sucursales.
SELECT a.PostCode As BranchPostcode, a.BranchName, count(b.Id) As CustomerCount
FROM CRM..Branches a
INNER JOIN CRM..Prospects b
ON PostCodeDistanceCalculator.dbo.distanceBetweenPostCodes(a.PostCode,b.PostCode)<5
GROUP BY a.PostCode
El resultado sería algo como:
Código postal de la sucursal | Rama | Clientes |
---|---|---|
BN1 2RE | Brighton | 15 |
PO19 1EL | Chicester | 37 |
W4 5TA | Chiswick | 89 |
distanceToAllPostCodes
Supongamos que quisiéramos determinar la sucursal más cercana para cada cliente potencial. Podemos hacer uso de distanceToAllPostCodes
para determinar la distancia de cada sucursal a cada cliente potencial y realizar el pedido por armario.
SELECT a.ProspectName, c.BranchName, b.distance,
ROW_NUMBER() OVER (PARTITION BY a.ProspectName ORDER BY b.distance ) As DistanceRank
FROM CRM..Prospects a
CROSS APPLY PostCodeDistanceCalculator.dbo.distanceToAllPostCodes(a.PostCode) b
INNER JOIN CRM..Branches c on b.Postcode = c.Postcode
El resultado sería algo como:
Nombre del prospecto | Nombre de la sucursal | Distancia |
---|---|---|
Acme Corp. Ltd. | Brighton | 7.477788367078679 |
Acme Corp. Ltd. | Chicester | 82.13621491096778 |
Acme Corp. Ltd. | Chiswick | 86.65279491895977 |
PopPostCodes.sql
y edite la ubicación del archivo 'C:UserstimgasourcereposPostCodeDistanceCalculatorPostCodeDistanceCalculatorFilesukpostcodes.csv'
para que apunte a la ubicación correcta.PostCodeDistanceCalculator.publish.xml
y seleccione la instancia de destino y la base de datos en la que realizar la implementación.Contiene datos de Ordnance Survey © Crown copyright y derecho de base de datos 2021
Contiene datos de Royal Mail © Copyright de Royal Mail y derecho de base de datos 2021
Fuente: Oficina de Estadísticas Nacionales con licencia de Gobierno Abierto v.3.0