create table #([ID] int,[name] nvarchar(10),pID int)
insert into #
select 1,'类一',0 union all
select 2,'类二',0 union all
select 3,'项一',1 union all
select 4,'项二',1 union all
select 5,'项三',2 union all
select 6,'项四',2 union all
select 7,'类三',0 union all
select 8,'项五',7 union all
select 9,'项六',1
select A.* from # A left join # B on a.pID = b.[ID]
order by isnull(B.[ID],A.[ID]),A.[ID]