Or this (which looks about like Nigel's without the spacing)
set nocount on
declare @level int
set @level = 1
create table #tree (id int identity (1,1), dataid int, level int)
insert #tree (dataid, level)
select dataid, @level
from dirtable where parentid = 0 -- or is null
While @@rowcount > 0
begin
set @level = @level + 1
insert #tree (dataid, level)
select d.dataid, @level
from dirtable d
inner join #tree t on t.dataid = d.parentid
where t.level = @level - 1
order by dirname
end
Select dirname from #tree t
inner join dirtable d on t.id = t.dataid
order by id
drop table #tree
I'm curious to know why you want this, because it does not seen very useful.
--Ken
I want to die in my sleep like my grandfather, not screaming in terror like his passengers.