T-SQLを使用して、長さが異なる複数の親子関係を組み合わせるにはどうすればよいですか?

ミシェルターナー

概要

Azureデータベース(SQL Server Management Studio 17、つまりT-SQLを使用)で、長さの異なる複数の親子関係を連結しようとしています。

ベーステーブル

私のテーブルは次の形式です。

ID   parent
1    2
2    NULL
3    2
4    3
5    NULL

このコードを自由に使用して生成し、入力してください。

DECLARE @t TABLE (
ID int,
parent int
)

INSERT @t VALUES
( 1, 2 ),
( 2, NULL ),
( 3, 2 ),
( 4, 3 ),
( 5, NULL )

問題

次の表に示すように、パスが連結されたテーブルを受け取るにはどうすればよいですか?

ID   path      parentcount
1    2->1      1
2    2         0
3    2->3      1
4    2->3->4   2
5    5         0

詳細

実際のテーブルにはさらに多くの行があり、最長のパスには最大15個のIDが含まれている必要があります。したがって、親カウントの定義の観点から動的なソリューションを見つけることが理想的です。また、「parentcount」列は必ずしも必要ではないので、回答ではスキップしてください。

select @@version:
Microsoft SQL Azure (RTM) - 12.0.2000.8
ゴードン・リノフ

これには再帰CTEを使用できます。

with cte as (
      select id, parent, convert(varchar(max), concat(id, '')) as path, 0 as parentcount
      from @t t
      union all
      select cte.id, t.parent, convert(varchar(max), concat(t.id, '->', path)), parentcount + 1
      from cte join
           @t t
           on cte.parent = t.id
     )
select top (1) with ties *
from cte
order by row_number() over (partition by id order by parentcount desc);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のExpression <Func <T、bool >>を1つの式に組み合わせて、DbContextに対して実行するにはどうすればよいですか?

分類Dev

t-sqlを使用して論理アイテムの組み合わせを確認するにはどうすればよいですか?

分類Dev

T-SQL: 複数行のコードを if ステートメントと組み合わせるにはどうすればよいですか

分類Dev

新しいレーンを気にしないときに、int32x2_tをclang / AArch64のNEON組み込み関数を使用してint32x4_tに拡張するにはどうすればよいですか?

分類Dev

Tとは異なる型のProxy <T>を引数として使用するにはどうすればよいですか?

分類Dev

リアクティブな「中間サブスクライバー」を作成するにはどうすればよいですか?すべてのFlux <T>パーツを組み合わせて、それらの結果をさらにチェーンで処理する方法(Mono <R>に変換)?

分類Dev

$ STRINGが "\ t \ t"で終わる場合、split(/ \ t /、$ STRING)に空の値を検出させるにはどうすればよいですか?

分類Dev

URLからt-sqlを介して複数のxml値を読み取るにはどうすればよいですか?

分類Dev

XSL-T 1.0を使用して、重複ノードに対して異なる出力を生成するにはどうすればよいですか?

分類Dev

T-SQLを使用してURLからXMLを読み取るにはどうすればよいですか?

分類Dev

複数の列に対してt.testを実行する関数を作成するにはどうすればよいですか

分類Dev

Container :: value_typeが指定されていない場合にC ++ Container <T>のTを取得するにはどうすればよいですか?

分類Dev

グループ化と組み合わせると、T-SQLクエリで日付を正しく並べ替えるにはどうすればよいですか?

分類Dev

`sleep3`の代わりに` read -t3`を使用すると便利な場合があります。`nohup`で動作させるにはどうすればよいですか?

分類Dev

T-SQL:文字列が連結された列を複数の行に分割するにはどうすればよいですか?

分類Dev

mpz_t番号がGMPを使用して初期化されているかどうかを確認するにはどうすればよいですか?

分類Dev

T-SQLクエリに一致しない値をゼロとして出力させるにはどうすればよいですか?

分類Dev

クエリを使用して複数のリスト<T>のコレクションを検索するにはどうすればよいですか?

分類Dev

Arc <RwLock <T >>によって保護されている基になるデータへの参照を使用するにはどうすればよいですか?

分類Dev

既存の関数をTComparison <T>に割り当てるにはどうすればよいですか?

分類Dev

NSAttributedStringの「\ t」の長さを変更するにはどうすればよいですか?

分類Dev

私のAPIはすべてFuture [Option [T]]を返しています。これは、for-comprでそれらをうまく組み合わせる方法です。

分類Dev

T-SQLで複数の行を組み合わせる方法

分類Dev

タイプContainer <T> :: Iteratorの関数パラメーターが与えられた場合、特定の種類のTに対して特定のオーバーロードを実現するにはどうすればよいですか?

分類Dev

t-sql関数でnull値を無視するにはどうすればよいですか?

分類Dev

T-SQLでatan2関数を実行するにはどうすればよいですか?

分類Dev

「ジェネリックパラメータ「T」が関数シグネチャで使用されていない」というエラーを克服するにはどうすればよいですか?

分類Dev

複合キーセレクターを使用してIEnumerable <T>をグループ化するにはどうすればよいですか?

分類Dev

複雑なT-SQLをLinqに変換するにはどうすればよいですか

Related 関連記事

  1. 1

    複数のExpression <Func <T、bool >>を1つの式に組み合わせて、DbContextに対して実行するにはどうすればよいですか?

  2. 2

    t-sqlを使用して論理アイテムの組み合わせを確認するにはどうすればよいですか?

  3. 3

    T-SQL: 複数行のコードを if ステートメントと組み合わせるにはどうすればよいですか

  4. 4

    新しいレーンを気にしないときに、int32x2_tをclang / AArch64のNEON組み込み関数を使用してint32x4_tに拡張するにはどうすればよいですか?

  5. 5

    Tとは異なる型のProxy <T>を引数として使用するにはどうすればよいですか?

  6. 6

    リアクティブな「中間サブスクライバー」を作成するにはどうすればよいですか?すべてのFlux <T>パーツを組み合わせて、それらの結果をさらにチェーンで処理する方法(Mono <R>に変換)?

  7. 7

    $ STRINGが "\ t \ t"で終わる場合、split(/ \ t /、$ STRING)に空の値を検出させるにはどうすればよいですか?

  8. 8

    URLからt-sqlを介して複数のxml値を読み取るにはどうすればよいですか?

  9. 9

    XSL-T 1.0を使用して、重複ノードに対して異なる出力を生成するにはどうすればよいですか?

  10. 10

    T-SQLを使用してURLからXMLを読み取るにはどうすればよいですか?

  11. 11

    複数の列に対してt.testを実行する関数を作成するにはどうすればよいですか

  12. 12

    Container :: value_typeが指定されていない場合にC ++ Container <T>のTを取得するにはどうすればよいですか?

  13. 13

    グループ化と組み合わせると、T-SQLクエリで日付を正しく並べ替えるにはどうすればよいですか?

  14. 14

    `sleep3`の代わりに` read -t3`を使用すると便利な場合があります。`nohup`で動作させるにはどうすればよいですか?

  15. 15

    T-SQL:文字列が連結された列を複数の行に分割するにはどうすればよいですか?

  16. 16

    mpz_t番号がGMPを使用して初期化されているかどうかを確認するにはどうすればよいですか?

  17. 17

    T-SQLクエリに一致しない値をゼロとして出力させるにはどうすればよいですか?

  18. 18

    クエリを使用して複数のリスト<T>のコレクションを検索するにはどうすればよいですか?

  19. 19

    Arc <RwLock <T >>によって保護されている基になるデータへの参照を使用するにはどうすればよいですか?

  20. 20

    既存の関数をTComparison <T>に割り当てるにはどうすればよいですか?

  21. 21

    NSAttributedStringの「\ t」の長さを変更するにはどうすればよいですか?

  22. 22

    私のAPIはすべてFuture [Option [T]]を返しています。これは、for-comprでそれらをうまく組み合わせる方法です。

  23. 23

    T-SQLで複数の行を組み合わせる方法

  24. 24

    タイプContainer <T> :: Iteratorの関数パラメーターが与えられた場合、特定の種類のTに対して特定のオーバーロードを実現するにはどうすればよいですか?

  25. 25

    t-sql関数でnull値を無視するにはどうすればよいですか?

  26. 26

    T-SQLでatan2関数を実行するにはどうすればよいですか?

  27. 27

    「ジェネリックパラメータ「T」が関数シグネチャで使用されていない」というエラーを克服するにはどうすればよいですか?

  28. 28

    複合キーセレクターを使用してIEnumerable <T>をグループ化するにはどうすればよいですか?

  29. 29

    複雑なT-SQLをLinqに変換するにはどうすればよいですか

ホットタグ

アーカイブ