在表中的某些记录后添加空行

时间:2016-05-21 05:27:17

标签: sql tsql

我有一个在层次结构中排序的表[Parent,Child,Child2] ....我有4列用于将记录排序到正确的位置,我还需要在每个列之前添加一个空白行父母(或在最后一个孩子之后)但我不确定如何去做它

我正在考虑使用的列是ParentID列,因为它与父节点和所有子节点的ID相同,但我真的不想设置游标来循环表,是否有另外一种方法可以执行此操作? / p>

使用ORDER BY ParentID,Child1ID,Child2ID

组织表格

实施例。数据

[DATA] - [说明] - [PARENTID] - [Child1ID] - [Child2ID]

Rec1 - Parent - PID1 - NULL - NULL

Rec2 - Child - PID1 - CID1 - NULL

Rec3 - Child2 - PID1 - CID1 - C2ID1

Rec4 - Child - PID1 - CID2 - NULL

Rec5 - Parent - PID2 - NULL - NULL

等等

2 个答案:

答案 0 :(得分:0)

我只是希望Child2是错误打印

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

答案 1 :(得分:0)

我会使用两个row_number(),一个使用您的订单作为代理PK,另一个根据每个父级进行分区。然后我会得到标记,我可以找到每个最后一个孩子。当我将代理PK乘以10时,我可以将空白行插入第10行+5。

Tested here