逐级更新的问题,怎么写大师们

神驹 2014-08-16 08:38:22
有一个表
A表记录如下:
fnumber fname flevel fitemid parent data
1 a 1 1 0 0
2 b 2 2 1 0
3 c 2 2 1 0
4 d 2 4 0 0
5 e 5 5 4 10
上表,如何根据 flevel级次,把最大级数据一级一级更新到data字段,其中parent 记录他的上级id ,fitemid与parent相等的记录就是相关记录下级?
...全文
146 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzb001 2014-08-17
  • 打赏
  • 举报
回复

/* 使用递归表达式,需要sqlserver2005及以上 */
/* 假设源表为Test */
with Test (fnumber, fname, flevel, fitemid, parent, data) as
(
 select 1, 'a', 1, 1, 0, 0 union all
 select 2, 'b', 2, 2, 1, 0 union all
 select 3, 'c', 2, 2, 1, 0 union all
 select 4, 'd', 2, 4, 0, 0 union all
 select 5, 'e', 5, 5, 4, 10
)

, S1 as
(
select fnumber, fname, flevel, fitemid, parent, data
from Test
where fitemid not in (select parent from Test)
union all
select Test.fnumber, Test.fname, Test.flevel, Test.fitemid, Test.parent, data = Test.data + S1.data
from S1 inner join 
     Test on S1.parent = Test.fitemid
)

select *
from S1
order by fnumber
save4me 2014-08-16
  • 打赏
  • 举报
回复
有没有使用联级更新触发器?
lzw_0736 2014-08-16
  • 打赏
  • 举报
回复
最好列出想要的结果

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧