İki masam var. PostalCodes
(00-00 ile 99-999 arasındaki değerlere sahip bir sütun ile) ve Customers
(müşterinin tüm verilerinin yanında, müşteriye hizmet veren çalışanın posta kodu ve kimliği vardır).
Bu yüzden bu ikisine sadece posta koduyla katılıyorum:
SELECT DISTINCT
KP.postal,
K.IDemp
FROM
PostalCodes KP
LEFT JOIN
[Customers] K ON K.postal = KP.postal
ve bunu alıyorum:
| 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 |
| ... | ... |
Gördüğünüz gibi, tüm posta kodları Customers
ancak amacım için, "hizmet alanı" gibi bir şey oluşturmak için bazı çalışanlara atanan tüm posta kodlarına ihtiyacım var, bu yüzden bunun gibi bir şey elde etmek için boş değerleri son boş olmayan değerle doldurmak istiyorum:
| postal | IDemp |
+--------+-------+
| 00-000 | NULL |
| 00-001 | 12PH |
| 00-002 | 12PH |
| 00-003 | 12PH |
| 00-004 | 10PH |
| 00-005 | 10PH |
| ... | ... |
Kullanmaya çalışıyordum LAG()
işlev, ancak çalışmıyordu (ya da en azından nasıl düzgün kullanılacağını bilmiyorum)
LAG(K.IDemp) OVER (ORDER BY KP.postal)
Zaten birkaç benzer soru buldum, ancak cevaplarını davama nasıl kullanacağımı bulamadım.