六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 291|回复: 0

一个关于累加工资的T-SQL语句

[复制链接]

升级  0.4%

164

主题

164

主题

164

主题

进士

Rank: 4

积分
502
 楼主| 发表于 2013-1-4 01:28:10 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">    今天在ITPUB看到一个人问的语句问题:http://www.itpub.net/thread-1734957-1-1.html
       问题如下:
  table:emp   
parent_id emp_id emp_name total_amout   
NULL 2 Andrew 200   
2 1 Nancy 100   
2 3 Janet 120   
3 4 Michael 80   
1 5 Robert 50   
每个员工的总销售额=自己的销售额+其下级员工的总销售额,   
比如:   
Andrew = 200_100_120_80_50=550     
Nancy = 100+50=150   
Janet = 120+80=200   
Michael = 80   
Robert = 50   
这个用SQL怎样可以查询得到,请教一下大家???
   
   
      我用递归+游标实现了一下,总感觉应该有更好的实现方式,下面是我的实现方式:
  <div style="border-bottom: green 1px dashed; border-left: green 2px solid; padding-bottom: 1px; margin-top: 5px; padding-left: 1px; padding-right: 1px; margin-left: 15px; border-top: green 1px dashed; border-right: green 1px dashed; padding-top: 1px; margin-buttom: 5px">   WITH recur(parent_id , emp_id , emp_name , total_amout,tlevel) as (    select parent_id , emp_id , emp_name , total_amout,0 as tlevel    from emp as b    where parent_id is NULL    UNION all    SELECT a.parent_id , a.emp_id , a.emp_name , a.total_amout,b.tlevel+1        from emp as a INNER join recur b ON a.parent_id=b.emp_id         ) select * INTO emp_ext from recur DECLARE @level int DECLARE @temp int select @level=max(tlevel) FROM emp_ext while(@level>0) begin     declare cursor_t cursor local static read_only forward_only     for         select emp_id from emp_ext where tlevel=@level-1                 open cursor_t         FETCH NEXT FROM cursor_t into @temp         WHILE @@FETCH_STATUS=0         BEGIN         print @level         update emp_ext set total_amout=(SELECT sum(total_amout) from emp_ext where parent_id=@temp)+(SELECT total_amout from emp_ext where emp_id=@temp)         where emp_id=@temp         FETCH NEXT FROM cursor_t into @temp         END                 set @level=@level-1         close cursor_t         DEALLOCATE cursor_t end
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表