Mam dwa biurka PostalCodes
(z jedną kolumnę z wartościami od 00-00 do 99-999) i Customers
(który ma, oprócz wszystkich danych klienta, kod pocztowy i identyfikator pracownika, który obsługuje klienta).
Więc co do tych dwóch po prostu dołączę za pomocą skrzynki kodu:
SELECT DISTINCT
KP.postal,
K.IDemp
FROM
PostalCodes KP
LEFT JOIN
[Customers] K ON K.postal = KP.postal
i dostaję to:
| 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 |
| ... | ... |
Tak że, jak widać, nie wszystkie kody pocztowe są używane w Customers
tabela, ale dla mojego celu potrzebne mi są wszystkie kody pocztowe przypisane do żadnego pracownika, aby stworzyć coś takiego jak "zakres usług", więc dla tego chcę wypełnić puste wartości ostatnim nie puste wartości, aby uzyskać coś takiego:
| postal | IDemp |
+--------+-------+
| 00-000 | NULL |
| 00-001 | 12PH |
| 00-002 | 12PH |
| 00-003 | 12PH |
| 00-004 | 10PH |
| 00-005 | 10PH |
| ... | ... |
Próbowałem użyć LAG()
funkcja, ale ona nie pracowała (lub, przynajmniej, nie wiem, jak go poprawnie używać)
LAG(K.IDemp) OVER (ORDER BY KP.postal)
Już znalazłem kilka podobnych tematów, ale nie mógł wymyślić, jak korzystać z ich odpowiedzi w moim przypadku.