求SQL語句遞迴的演算法

2021-04-12 19:50:53 字數 1044 閱讀 4375

表結構是這樣的

部門    上級部門   

a           b

b           c

c           d

a           a

b           b

c           c

求一條sql語句,根據a查其上級部門,查詢結果為

上級部門bc

d用函式

create table tb (部門 varchar(20),上級部門 varchar(20))

insert into tb select 'a','b' union all select 'b','c' union all select 'c','d'

union all select 'a','a' union all select 'b','b' union all select 'c','c'

--select * from tb

create function test_f (@name varchar(20))

returns @ta table(上級部門 varchar(20))

as begin

--select @name=上級部門 from tb where 部門=@name and 部門!=上級部門

while exists(select 1 from tb where 部門=@name and 部門!=上級部門)

begin

insert @ta select 上級部門 from tb where 部門=@name and 部門!=上級部門

select @name=上級部門 from tb where 部門=@name and 部門!=上級部門

endreturn

endselect * from dbo.test_f('a')

刪除:drop function test_f

drop table tb

上級部門                

-------------------- bc

d(所影響的行數為 3 行) 

用SQL語句實現遞迴演算法

本文通過乙個bom表的例子,分別介紹在sql server2000和sql server2005中如何編寫遞迴演算法。一 建立測試資料 createtablebillofmaterial productno nvarchar 15 父元件編號 productname nvarchar 50 子元件名...

SQL語句求日期

sql語句求日期 select add months sysdate,1 lastday from dual 上個月的今天 select to char add months last day sysdate 1 yyyy mm dd lastday from dual 上個月的最後一天 selec...

sql語句遞迴查詢

表結構 給出乙個結點找到該節點的所有 子 節點 with c depts as select dept.from department dept where dept.pptr 父節點id union all select dept.from c depts department dept wher...