2016-04-21 53 views
2

我想使用具有相同客戶端編號的非空列來更新客戶端表中的空白名稱列。你知道我應該如何修改下面的SQL嗎?謝謝,更新和自加入

UPDATE CLIENT 
    SET NAME=(SELECT NAME FROM CLIENT WHERE (NAME IS NOT NULL AND NAME<>'')) 
FROM CLIENT C1, CLIENT C2 
WHERE (NAME IS NULL OR NAME='') AND C1.CLIENT_NO=C2.CLIENT_NO 
+0

辛迪,我們需要知道你的表結構是什麼,以及什麼樣的一些數據看起來像之前和之後。 –

回答

1

我會建議使用窗口函數用於此目的:

with toupdate as (
     select c.*, max(name) over (partition by client_no) as maxname 
     from client c 
    ) 
update toupdate 
    set name = maxname 
    where name is null or name = ''; 
+0

非常感謝Gordon Linoff! – Ice