Tengo dos tablas PostalCodes
(con una columna con los valores de 00-00 a 99-999) y Customers
(que tiene, además de todos los datos del cliente, el código postal y el ID de empleado, la cual es servir al cliente).
Así que estos dos simplemente estoy uniendo a través de código postal:
SELECT DISTINCT
KP.postal,
K.IDemp
FROM
PostalCodes KP
LEFT JOIN
[Customers] K ON K.postal = KP.postal
y me estoy poniendo esto:
| postal | IDemp |
+--------+-------+
| 00-000 | NULL |
| 00-001 | NULL |
| 00-001 | 12PH |
| 00-002 | NULL |
| 00-003 | NULL |
| 00-004 | NULL |
| 00-004 | 10PH |
| 00-005 | NULL |
| ... | ... |
Así que como puedes ver, no todos los códigos postales son utilizados en la Customers
de la tabla, pero para mi objetivo es necesario que todos los códigos postales asignados a algunos de los empleados para crear algo así como "área de servicio", así que para que quiero rellenar los valores null con el último no nulo valor para obtener algo como esto:
| postal | IDemp |
+--------+-------+
| 00-000 | NULL |
| 00-001 | 12PH |
| 00-002 | 12PH |
| 00-003 | 12PH |
| 00-004 | 10PH |
| 00-005 | 10PH |
| ... | ... |
Yo estaba tratando de usar LAG()
la función, pero no estaba funcionando (o al menos yo no sé cómo usarlo correctamente)
LAG(K.IDemp) OVER (ORDER BY KP.postal)
He encontrado algunas preguntas similares ya, pero no podían llegar hasta cómo utilizar sus respuestas para mi caso.