Eu tenho duas tabelas PostalCodes
(com uma coluna com valores a partir de 00-00 para 99-999) e Customers
(que, além de todos os dados do cliente, um código postal e a IDENTIFICAÇÃO do empregado que estiver servindo o cliente).
Assim, estes dois eu sou simplesmente adesão através do código postal:
SELECT DISTINCT
KP.postal,
K.IDemp
FROM
PostalCodes KP
LEFT JOIN
[Customers] K ON K.postal = KP.postal
e eu estou ficando este:
| 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 |
| ... | ... |
Então, como você pode ver, nem todos os códigos postais são utilizados no Customers
tabela, mas para o meu objetivo, preciso de todos os códigos postais atribuído a algum funcionário criado algo como "área de serviço", de modo a fazer que eu precisava para preencher valores nulos com o último valor não nulo para obter algo como isto:
| postal | IDemp |
+--------+-------+
| 00-000 | NULL |
| 00-001 | 12PH |
| 00-002 | 12PH |
| 00-003 | 12PH |
| 00-004 | 10PH |
| 00-005 | 10PH |
| ... | ... |
Eu estava tentando usar LAG()
função, mas ele não estava trabalhando (ou pelo menos eu não sei como usá-lo corretamente)
LAG(K.IDemp) OVER (ORDER BY KP.postal)
Achei algumas perguntas semelhantes já, mas não poderia vir até como usar as suas respostas para o meu caso.