求助:sqlserver的递归计算怎么写?

一转程序员 2019-04-18 01:54:37
请忽略其中的计算逻辑错误,只关注sqlserver语句就好了 树形结构见图: 每一行的total=number*price 父节点的number是其子节点number之和,price是其子节点price的平均值 现在需要在改动一个叶节点的number后,递归计算其父、祖节点的各值。这个sqlserver语句应该怎么写?
...全文
246 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一转程序员 2019-04-21
  • 打赏
  • 举报
回复
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[treetest](
[id] [int] IDENTITY(1,1) NOT NULL,
[pid] [int] NULL,
[category] [varchar](30) NULL,
[number] [float] NULL,
[price] [float] NULL,
[total] [float] NULL,
CONSTRAINT [PK_treetest] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

insert into treetest (category,number,price,total) values ('水果',106,2.2,233.2)
insert into treetest (pid,category,number,price,total) values (1,'南方水果',18,2,36)
insert into treetest (pid,category,number,price,total) values (1,'北方水果',88,2.4,211.2)
insert into treetest (pid,category,number,price,total) values (3,'苹果',10,1,10)
insert into treetest (pid,category,number,price,total) values (3,'梨',22,2,44)
insert into treetest (pid,category,number,price,total) values (3,'桃',42,3,126)
insert into treetest (pid,category,number,price,total) values (3,'杏',6,4,24)
insert into treetest (pid,category,number,price,total) values (2,'芒果',5,2,10)
insert into treetest (pid,category,number,price,total) values (2,'香蕉',6,3,18)
insert into treetest (pid,category,number,price,total) values (2,'荔枝',7,1,7)
insert into treetest (pid,category,number,price,total) values (3,'葡萄',8,2,16)

如果我更新了‘桃’的数量为10,那么先将这一行的total改为30。(10*2)
然后计算父项‘北方水果’的number改为56,total改为134.4。(56*2.4)
然后再计算‘北方水果’的父项‘水果’的number为74,total为162.8。(74*2.2)
价格是其子项的平均值,先不管了
一转程序员 2019-04-21
  • 打赏
  • 举报
回复
引用 5 楼 二月十六 的回复:
[quote=引用 4 楼 hodrag 的回复:]
[quote=引用 3 楼 二月十六的回复:][quote=引用 2 楼 hodrag 的回复:]
[quote=引用 1 楼 二月十六的回复:]给出测试数据和对应想要的结果,别贴图。

晚上吧,公司里不能上外网,我用手机发的[/quote]
https://blog.csdn.net/sinat_28984567/article/details/79576583[/quote]
大佬你这篇文章我看了,可是我需要更新父节点的数据啊,这个怎么写?[/quote]
贴测试数据和结果[/quote]
版主,我上传不了附件,怎么发送给你?
二月十六 版主 2019-04-20
  • 打赏
  • 举报
回复
引用 4 楼 hodrag 的回复:
[quote=引用 3 楼 二月十六的回复:][quote=引用 2 楼 hodrag 的回复:] [quote=引用 1 楼 二月十六的回复:]给出测试数据和对应想要的结果,别贴图。
晚上吧,公司里不能上外网,我用手机发的[/quote] https://blog.csdn.net/sinat_28984567/article/details/79576583[/quote] 大佬你这篇文章我看了,可是我需要更新父节点的数据啊,这个怎么写?[/quote] 贴测试数据和结果
一转程序员 2019-04-20
  • 打赏
  • 举报
回复
引用 3 楼 二月十六的回复:
[quote=引用 2 楼 hodrag 的回复:] [quote=引用 1 楼 二月十六的回复:]给出测试数据和对应想要的结果,别贴图。
晚上吧,公司里不能上外网,我用手机发的[/quote] https://blog.csdn.net/sinat_28984567/article/details/79576583[/quote] 大佬你这篇文章我看了,可是我需要更新父节点的数据啊,这个怎么写?
二月十六 版主 2019-04-18
  • 打赏
  • 举报
回复
引用 2 楼 hodrag 的回复:
[quote=引用 1 楼 二月十六的回复:]给出测试数据和对应想要的结果,别贴图。
晚上吧,公司里不能上外网,我用手机发的[/quote] https://blog.csdn.net/sinat_28984567/article/details/79576583
一转程序员 2019-04-18
  • 打赏
  • 举报
回复
引用 1 楼 二月十六的回复:
给出测试数据和对应想要的结果,别贴图。
晚上吧,公司里不能上外网,我用手机发的
二月十六 版主 2019-04-18
  • 打赏
  • 举报
回复
给出测试数据和对应想要的结果,别贴图。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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