查询自己的FK层次结构,树,表

时间:2010-11-24 07:14:35

标签: sql sql-server sql-server-2008

我有这张桌子

Id PId      Name   Value
------------------------
1  null     foo     null
2  1        bar     null
3  2        foobar  hi
4  1        bar1    hey

我需要一个可以给我这个结果的查询:

Name           | Value
-----------------------
foo bar foobar | hi
foo bar1       | hey

1 个答案:

答案 0 :(得分:0)

with s( id, pid, name, value) as
(
select f.id, f.pid, cast(f.name as nvarchar) as name, f.value from foos f 
where f.pid is null
union all
select f.id, f.pid, cast(s.name + f.name as nvarchar) as name, f.value from foos f inner join s on f.pid = s.id
)
select * from s
where not exists(select * from foos where pid = s.id)