基于记录级别获取父ID-SQL Server

基于记录级别获取父ID-SQL Server,sql,sql-server,Sql,Sql Server,我遇到P6WBS,在那里我需要将计划导入SQLServer表 P6中WBS的结构如下所示: 当我将表导入SQL Server时,我能够使用 CHARINDEX(LEFT(LTRIM(WBS), 1), WBS) -1 [Level] 结果: 我的挑战是根据记录所在的级别检索ParentID,也基于其顺序来获取以下结果: 如何根据级别获取ParentID 谢谢 一种方法是使用交叉应用 这是假设ID是连续的 这将产生本例所需的结果,但也存在评论中提到的风险 范例 返回 您的问题是什么?需要从其级别

我遇到P6WBS,在那里我需要将计划导入SQLServer表

P6中WBS的结构如下所示:

当我将表导入SQL Server时,我能够使用

CHARINDEX(LEFT(LTRIM(WBS), 1), WBS) -1 [Level]
结果:

我的挑战是根据记录所在的级别检索ParentID,也基于其顺序来获取以下结果:

如何根据级别获取ParentID

谢谢

一种方法是使用交叉应用

这是假设ID是连续的

这将产生本例所需的结果,但也存在评论中提到的风险

范例

返回


您的问题是什么?需要从其级别获取parentID请不要将代码/表作为图像发布,而是作为文本发布。您似乎依赖于表的顺序。SQL表表示无序集。行没有顺序,除非列指定了顺序。是的,顺序[ID]确实是关键,概念是根据其current ID给定的级别获取ParentID。完美!这正是我需要的。非常感谢。@OmarShahineoshahine总是乐于帮助。@OmarShahineoshahine通常,当你找到解决问题的答案时,习惯上会接受它。
Select A.* 
      ,B.ParentID 
 From YourTable A
 Cross Apply ( Select max(ID) from YourTable Where Level<A.Level and ID<A.ID ) B(ParentID)