2014-06-13 19 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