Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql select语句中生成数字_Sql_Oracle - Fatal编程技术网

在sql select语句中生成数字

在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

我有一个查询,返回一些父记录和子记录。 我想通过增量为每个子记录返回一个唯一的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,   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)


使用排号:谢谢。正是我需要的。使用排号:谢谢。正是我需要的。