У меня есть два стола PostalCodes
(с одним столбцом со значениями от 00-00 до 99-999) и Customers
(который имеет, помимо всех данных клиента, почтовый индекс и идентификатор сотрудника, который обслуживает клиента).
Так что к этим двоим я просто присоединюсь с помощью почтового кода:
SELECT DISTINCT
KP.postal,
K.IDemp
FROM
PostalCodes KP
LEFT JOIN
[Customers] K ON K.postal = KP.postal
и я получаю это:
| 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 |
| ... | ... |
Так что, как вы можете видеть, не все почтовые индексы используются в Customers
таблица, но для моей цели мне нужны все почтовые индексы, присвоенные какому-либо сотруднику, чтобы создать что-то вроде "область обслуживания", поэтому для этого я хочу заполнить пустые значения последним не пустым значением, чтобы получить что-то подобное:
| postal | IDemp |
+--------+-------+
| 00-000 | NULL |
| 00-001 | 12PH |
| 00-002 | 12PH |
| 00-003 | 12PH |
| 00-004 | 10PH |
| 00-005 | 10PH |
| ... | ... |
Я пытался использовать LAG()
функция, но она не работала (или, по крайней мере, я не знаю, как ее правильно использовать)
LAG(K.IDemp) OVER (ORDER BY KP.postal)
Я уже нашел несколько подобных вопросов, но не смог придумать, как использовать их ответы в моем случае.