标签: sql sql-server
我遇到了P6 WBS,需要将日程表导入到SQL Server表中。
P6中WBS的结构如下:
WBS
当我将表导入SQL Server时,我能够使用
CHARINDEX(LEFT(LTRIM(WBS), 1), WBS) -1 [Level]
结果:
我的挑战是根据记录所在的级别(也基于记录的顺序)检索ParentID,以获得以下结果:
ParentID
如何根据级别获得ParentID?
谢谢!
答案 0 :(得分:1)
一种方法是使用CROSS APPLY
CROSS APPLY
这是假设ID是连续的
这将为该示例产生预期的结果,但是存在注释中提到的风险。
示例
Select A.* ,B.ParentID From YourTable A Cross Apply ( Select max(ID) from YourTable Where Level<A.Level and ID<A.ID ) B(ParentID)
返回