问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL Server 2000 树状结构

发布网友 发布时间:2022-09-14 15:57

我来回答

3个回答

热心网友 时间:2023-12-05 02:16

展bom表的话,一般写procere,用递归调用自己查找下阶,直到最后阶

----
这个。。。。比较复杂,我只写过类似展bom的proceudre,oracle的
但是不知道怎麼说。。。。。
要用到递归,游标
而且bom层数多的话跑起来速度很慢,不小心还会死循环。。。。

简单来说,就是procere一次展一层,比如把需展的成品A展到半成品B,C
然后把半成品B,C当做成品,重复调用自己展下一层DEF。。。直到到底为止(也可以自己设定展到几层就停)

热心网友 时间:2023-12-05 02:16

你想要什么样的结果? HI我

create table test(id char(1),cid char(1))
go
insert into test select 'A','B'
union all select 'A','C'
union all select 'B','C'
union all select 'B','D'
union all select 'C','E'
union all select 'C','F'
union all select 'D','G'
union all select 'D','H'
union all select 'D','I'
--测试数据
go

create function func(@id char(1))
returns @rs table (id char(1),cid char(1))
as
begin
insert into @rs select * from test where id=@id
while @@rowcount>0
begin
insert into @rs select * from test where id in (select cid from @rs) and id not in (select id from @rs)
end
return
end
--定义函数
go

select * from dbo.func('B')
--运行
go

drop table test
drop function func

热心网友 时间:2023-12-05 02:17

--创建表插入测试数据
create table bom(bom01_01 nvarchar(10),bom01_02 nvarchar(10))
insert into bom values('A','B')
insert into bom values('A','C')
insert into bom values('B','E')
insert into bom values('E','F')
insert into bom values('B','D')
insert into bom values('F','G')
insert into bom values('1','2')
insert into bom values('2','3')
insert into bom values('2','4')
insert into bom values('4','5')
insert into bom values('3','6')
--创建函数
create function F_digui(@m nvarchar(10))
returns @re table(bom01_01 nvarchar(10),bom01_02 nvarchar(10))
as
begin
declare @sum int,@i int,@s nvarchar(10)
insert @re select * from bom where bom01_01=@m
set @sum=(select count(*) from @re)
set @i=1
if @sum>=1
begin
while @i<=@sum
begin
set @s=(select bom01_02 from (select bom01_02,rank() over(order by bom01_02) as id from @re)a where a.id=@i )
insert @re select * from F_digui(@s)
set @i=@i+1
end
end
return
end

--调用函数
select * from F_digui('1')

--删除测试表和函数
drop function F_digui
drop table bom

***************************
SQL2000的话把函数改成这样:
create function F_digui(@m nvarchar(10))
returns @re table(bom01_01 nvarchar(10),bom01_02 nvarchar(10))
as
begin
declare @sum int,@i int,@s nvarchar(10)
insert @re select * from bom where bom01_01=@m
set @sum=(select count(*) from @re)
set @i=1
if @sum>=1
begin
while @i<=@sum
begin
set @s=(select bom01_02 from (select bom01_02,row_number() over(order by bom01_02) as id from @re)a where a.id=@i )
insert @re select * from F_digui(@s)
set @i=@i+1
end
end
return
end
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
陕西哪些学校有专硕 求高人分析一下西北大学、西安电子科技大学、陕西师范和长安大学,金 ... 西北农林科技大学与西安电子科技大学哪个好 三星中央空调技术特点及技术优势 三星中央空调是什么系列 这配置装上W7系统64位的!再换个4G 内存条可以完美运行LOL吗?_百度知... 买的华硕750硬盘…电脑打开全部盘加起来只有有670左右…华硕A43的机 ... 哪位大神帮忙看看这机器还可以升级吗,用什么系统最好,不知道装什么系统... 台式电脑升级win7怎样将台式机XP系统换成Win7 刚买了块三星750固态120g的,怎么接线跟装w7系统(本人有u盘但是不会做启... 用SQL如何将下图转换成树形结构,以A1开始 数据库中树形图的用法 请高人给女儿起一个悦耳,对以后人生有帮助的名字 你好。税控盘服务费,在增值税申报表主表中填哪一栏? 营改增范围的服务企业如何填写增值税纳税申报表(小规模纳税人适用... 税控服务费370元全额抵扣的费用申报时填到哪个表里多少栏里 饮食服务行业报税销售额填哪栏? 增值税纳税申报表里280元的税控服务费填写在哪一栏里面? ...按适用税率计税的服务销售额,填报到增值税申报表哪一栏 《年桔》第二年还能结果吗? 开心超人是什么? 开心超人是出自哪位导演的作品? 东南dx7曲轴位置传感器在哪里 福鑫换热器内管乱动怎么修 列管换热器进油影响换热吗 被封了,没好友辅助,如何解封? 被封了,没好友辅助,如何解封? 被封了,没好友辅助,如何解封? 淘宝上买的西铁城2-300元光电能手表是正品吗 西铁城光动能电波手表,现在有假货吗? 《急》 根类食物有哪些 刺婆鱼怎么做好吃 刺皮鱼怎么做来吃最好? 如何安装keil c51单片机软件???紧急紧急! 关键是步骤!!谢了 刺霸鱼怎么做好吃 虾仁火丁甜豆的家常做法大全怎么做好吃视 甜豆炒虾仁怎么做 幼儿园过年手抄报图片 ...全球百种最危险入侵物种,被红火蚁咬伤之后该如何自救? hard、late、talk、wear各造句 通信紧急切换有几种 谁帮我看看吉州窑木叶建盏树叶是真的吗 更软切换和软切换的区别在于 CDMA 的软切换的区别 跟 更软切换 过控考研哪些学校好? 北方室内兰花怎么养呢 ...的信用卡已通过银行审核,待制卡配送。[建设银行]这是什么意思?_百 ... 建设银行办的信用卡!通过后发了条信息给我!说等待制卡配送!是几个意思... 建行信用卡制卡完成是什么时间送到邮局寄出来,是晚上统一寄到邮局吗?还... 建行信用卡通过审核后特制卡配送什么意思