2016-05-21 11 views
0

私は階層[[親、子、Child2]で順序付けられたテーブルを持っています....私は正しい位置にレコードを注文するためにまた、各親(または最後の子の後)の前に空白の行を追加する必要がありますが、それについて行く方法がわからないテーブル内の特定のレコードの後に​​空の行を追加します

私は使用して考えている列は、親と同じIDすべての子供が、私は本当にテーブルをループするカーソルをセットアップしたくない、私はこれを行うかもしれない別の方法はありますか?

テーブルのParentID、Child1ID、Child2ID

例、ORDER BYを使用して編成されます。データ

[DATA] - [DESC] - [のParentID] - [Child1ID] - [Child2ID]

REC1 - 親 - PID1 - NULL - NULL

REC2 - 子 - PID1 - CID1 - NULL

REC3 - CHILD2 - PID1 - CID1 - C2ID1

REC4 - 子 - PID1 - CID2 - NULL

REC5 - 親 - PID2 - NULL - NULL

などなど

+0

質問期待される結果と、使用するSQL Serverのバージョンに追加してください。 –

答えて

0

私はちょうど私が2つのROW_NUMBER()、あなたの順序を使用して代理PKとして1、およびそれぞれの親に基づいて分割する別のものを使用することになりCHILD2は誤植

select 'child' as 'xxx', [ParentID], [Child1ID], [Child2ID] 
from ... 
union 
select distinct 'parent', [ParentID], null, null 
from ... 
order by [ParentID], xxx desc 
+0

いいえ子供(レベル2)はデータの第3レベルですが、私はこれに似ていますが少し違った方法を使って説明しました –

0

であると思います。それから私はそれぞれ最後の子供を見つけることができるマーカーを得るでしょう。私は10の代理のPKを掛けたとき、私は10行目のように空白行を挿入することができるようになります+ 5

Tested here

+0

私はこれを調べますが、テーブルを修正して結果を得ました私の現在のコードを使って簡単にセットアップできるアプリケーションを開発しています。 –

関連する問題