在sql select语句中生成数字
我有一个查询,返回一些父记录和子记录。 我想通过增量为每个子记录返回一个唯一的id。 因此,如果我有一张有3个孩子的记录和一张有2个孩子的记录,我想返回在sql select语句中生成数字,sql,oracle,Sql,Oracle,我有一个查询,返回一些父记录和子记录。 我想通过增量为每个子记录返回一个唯一的id。 因此,如果我有一张有3个孩子的记录和一张有2个孩子的记录,我想返回 Parent/Child | Parent_id | Child_id 1. Parent record, Parent_id, 0 2. child_record, Parent_Id, 1 3. child_record, Parent_Id, 2 4. child_record, Pa
Parent/Child | Parent_id | Child_id
1. Parent record, Parent_id, 0
2. child_record, Parent_Id, 1
3. child_record, Parent_Id, 2
4. child_record, Parent_Id, 3
5. Parent record, Parent_id, 0
6. child_record, Parent_Id, 1
7. child_record, Parent_Id, 2
您知道如何从1生成子\u id并递增1,然后为下一批子记录再次重置吗 此查询根据其父id生成子编号条件:
select id_pk -- pk; defines global sort order
, p_c -- node type ('parent', 'child')
, p_id -- parent id
, row_number() over ( partition by p_id order by id_pk ) - 1 c_id
-- synthetic child id.
from test_pc
;
根据需要调整order by子句中的排序标准
示例:(孩子之间的顺序无关紧要,只需要一个唯一的本地id)
此查询生成与其父id对应的子编号条件:
select id_pk -- pk; defines global sort order
, p_c -- node type ('parent', 'child')
, p_id -- parent id
, row_number() over ( partition by p_id order by id_pk ) - 1 c_id
-- synthetic child id.
from test_pc
;
根据需要调整order by子句中的排序标准
示例:(孩子之间的顺序无关紧要,只需要一个唯一的本地id)
使用排号:谢谢。正是我需要的。使用排号:谢谢。正是我需要的。