私は、おそらく既に答えられている質問をしていますが、データベースから必要なものを正しく取得する方法を理解するのは本当に苦労しています。私は使用可能なWBSコードを取得しようとしているプリマベーラP6データベースを持っています。しかし、私はこれをレポートダッシュボードに組み込んでいるので、単に親子値を連結する以上のことをする必要があります。私の質問は2つの部分に分かれますが、ここで私の質問を理解するために、データベースの基本モデルです。レベルの列を持つ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
実際のデータベースにレベルが約7レベルにまで及ぶが、それはこの例をovercomplicateしまうので、私はlevel_4を追加しました。私の2番目の質問ははるかに簡単です(もっと期待しています)。これらのレベルを連結して1つの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/ –