? , :
declare @t table
(DBID int
,Title varchar(10)
,ParentID int
,OrderNum int
)
insert @t
select 1,'aaa',0,1
union select 2,'bbb',0,2
union select 3,'ccc',1,1
union select 4,'ddd',1,2
union select 5,'eee',2,1
select *
from @t
order by ISNULL(NULLIF(ParentID,0),DBID)
,ParentID
,OrderNum
,DBID
:
1:1 , , , . , - , , , .
, ( ParentID= 0) DBID, ParentID.
WHERE (ISNULL(NULLIF(ParentID,0),DBID)) .
CASE WHEN ParentID = 0
THEN DBID
ELSE ParentID
END
NULLIF...ISNULL, , , CASE...WHEN.