--
測試資料
ifobject_id('
tb') is
notnull
drop
table
tb go
create
table
tb(id
char(3
),pid
char(3
),name
nvarchar(10
))insert
tb select
'001',
null,'
山東省'
union
allselect
'002',
'001',
'煙台市
'union
allselect
'004',
'002',
'招遠市
'union
allselect
'003',
'001',
'青島市
'union
allselect
'005',
null,'
四會市'
union
allselect
'006',
'005',
'清遠市
'union
allselect
'007',
'006',
'小分市'go
--2000的方法
--查詢指定節點及其所有子節點的函式
create
function
f_cid(
@idchar(3
))returns
@t_level
table
(id
char(3
),level
int)
asbegin
declare
@level
intset
@level=1
insert
@t_level
select
@id,
@level
while
@@rowcount
>
0begin
set@level
=@level+1
insert
@t_level
select
tb.id,
@level
from
tb join
@t_level
t on
tb.pid
=t.id
where
t.level+1
=@level
endreturn
endselect
tb.*
from
tb join
dbo.f_cid(
'002
') b
ontb.id
=b.id
/*id pid name
---- ---- ----------
002 001 煙台市
004 002 招遠市
*/go
--2005的方法(cte)
declare
@nvarchar(10
)set@n=
'002
';with
jidian as(
select
*from
tb whereid=
@nunion
allselectt.*
from
jidian j
join
tb t
onj.id
=t.pid
)select
*from
jidian
go/*
id pid name
---- ---- ----------
002 001 煙台市
004 002 招遠市
*/go
--查詢指定節點的所有父節點(標準樹形,即乙個子節點只有乙個父節點)
create
function
f_pid(
@idchar(3
))returns
@t_level
table
(id
char(3
))as
begin
insert
@t_level
select
@idselect
@id=
pid
from
tbwhereid=
@idand
pid
isnot
null
while
@@rowcount
>
0begin
insert
@t_level
select
@idselect
@id=
pid
from
tbwhereid=
@idand
pid
isnot
null
endreturn
endselect
tb.*
from
tb join
dbo.f_pid(
'004
') b
ontb.id
=b.id
/*id pid name
---- ---- ----------
001 null 山東省
002 001 煙台市
004 002 招遠市
*/go
--2005的方法
declare
@nvarchar(10
)set@n=
'004';
with
fujidian as(
select
*from
tb whereid=
@nand
pid
isnot
null
union
allselecta.*
from
tb a
join
fujidian f
ona.id
=f.pid
)select
*from
fujidian
order
byid
/*id pid name
---- ---- ----------
001 null 山東省
002 001 煙台市
004 002 招遠市
*/
Sql2000和Sql2005共存安裝詳細過程
在安裝了sql2000的基礎上安裝sql2005的詳細過程 sql2005版本 sql2005開發版,兩張cd的那種 作業系統 window 2003 server 假設您的電腦已安裝了sql2000,下面開始安裝sql2005。一 執行光碟1 跳過 準備 步驟,直接進行 伺服器元件 工具 聯機叢書...
SQL2005的資料轉成SQL2000
直接restore或附加應該是不行的,用指令碼 導資料肯定沒有問題。2005轉到2000的步驟 1.生成for 2000版本的資料庫指令碼 2005 的manger studio 開啟 物件資源管理器 沒有的話按f8 連線到你的例項 右鍵要轉到2000的庫 任務 生成指令碼 在 指令碼嚮導 的 選擇...
SQL2000和SQL2005的行轉列處理方法
select show id year n1 n2 n3 n4 n5 from datapass db dbo test 1 sql2005中的列轉行.select show id mon,subtotal from datapass db dbo test unpivot subtotal for...