2014-06-13 58 views
0

我有兩個表tblEMP和tblChild。基於子tbl數據更新master tbl的數據

在tblEMP中,我有兩列Empid和薪水,而在tblEMP薪水值目前爲空。 在tblChild中,我有三列Childid,Empid和薪水。這是來自tblEMP的知識。我有數據如下圖所示enter image description here

現在我想從tblChild的工資中匹配EMPID更新tblEMP的工資。

對於實施例tblEMP:EMPID 1的工資將是:2500(tblChild childID的3)和

EMPID 2的工資將是:500(tblChild childID的4)和 EMPID 3的工資將是:4000(tblChild childID的6 )。

感謝

+0

所以你的比賽標準是最大'ChildId'對於給定'EMPID'子記錄? –

+0

是的:@ shree.pat18 – Hitesh

回答

1

試試這個:

;with cte as 
(select empid,max(childid) maxid 
from child 
group by empid) 

update emp 
set salary = c.salary 
from 
emp e 
inner join cte t on e.empid = t.empid 
inner join child c on t.maxid = c.childid 

基本上,你得到最大的ChildID每個EmpID,然後做2加入 - 根據EmpId然後CTE之間第一Emp和CTE之間ChildChildID,從Child表中獲取所需的記錄。

1

或者你可以使用:

;with cte 
as 
(
select childid, empid, salary, 
row_number() over(partition by empid order by empid, childid desc) rno 
from child 
) 
update emp 
    set salary = cte.salary 
from cte 
where cte.empid = temp.empid 
and cte.rno = 1 

做基於EMPID行編號和更新員工表accodtingly