0
我很抱歉问一个问题可能已经被回答,但我真的很努力去理解如何正确地得到我需要的数据库。我有一个primavera P6数据库,我试图从中获取可用的WBS代码。但是,因为我将它构建到报告仪表板中,我需要做的不仅仅是连接父/子值。我的问题将分为两部分,但在此理解我的问题是数据库的基本模型。T-SQL递归父子选择与平整列
wbs_id wbs_short_name parent_wbs_id
1 CONTR null
2 RET null
3 PRC 1
4 FEE 1
5 PRC 2
6 FEE 2
7 100 3
8 110 4
9 200 5
10 210 6
我的第一个问题是,我怎么可以编写一个查询,这将给我wbs_short_name的每个不同“级别”,在单独的平整列?最终的结果应该是这样的:
Level_1 Level_2 Level_3 Level_4
CONTR PRC 100 null
CONTR FEE 110 null
RET PRC 200 null
RET FEE 210 null
我添加了一个level_4因为在实际的数据库中的水平向下延伸到约7个级别,但这样会过于复杂这个例子。我的第二个问题是(我预计)要简单得多,是否可以添加一个额外的结尾列,将所有这些级别连接并组合到一个WBS代码中?这将是这样的:
Level_1 Level_2 Level_3 WBS
CONTR PRC 100 CONTRPRC100
CONTR FEE 110 CONTRPRC110
RET PRC 200 RETPRC200
RET FEE 210 RETPRC210
我需要为限幅器控制在我的仪表板水平列,我需要的WBS才能够建立一个链接表,这将让我加入我的P6数据库到我的其他数据源它们使用这些WBS代码。感谢您提供的所有帮助。
你有两种不同的技术怎么回事,使这项工作。首先是获取数据的递归cte。然后,您需要使用FOR XML来连接来自行的值。我们可以帮助但首先需要您提供一些信息。这里是一个很棒的地方。开始。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –