問題タブ [common-table-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
379 参照

sql-server-2005 - どのようにして多くのトップルートを取得しますか?

多対多の親子関係テーブルがあります

会社a、b、c、d、eがあるとしましょう

このクエリで上位の親を1つ返すようになりました

bを渡すと、

私が書いたクエリは1つの最上位の親しか管理できないためです。最初のツリーのように、ツリー全体を取得できるようにするには、どのように修正しますか?

これが私のCTEです

結局、上記のロジックで、私はa、dを取得する方法を取得しますか?

0 投票する
4 に答える
15542 参照

sql - SQL 2005 CTE と TEMP テーブル 他のテーブルの結合で使用した場合のパフォーマンス

後続のクエリ (実際には update ステートメント) で使用する必要がある複雑なクエリがあります。CTE と一時テーブルの両方を使用してみました。CTE を使用したパフォーマンスは、一時テーブル アプローチと比べてひどいものです。15秒対ミリ秒のようなものです。後続のクエリで CTE/Temp テーブルを結合するのではなく、テストを簡素化するために、そこから * を選択しました。その場合、彼らは同じことを行います。

両方のアプローチの実行計画を見て、後続のクエリで結合を使用して、* を選択するだけです。単純な選択ではクエリ プランはほぼ同じですが、後続の選択での結合ではクエリ プランは異なります。具体的には、一時テーブルを作成および設定するためのクエリ プランの部分は同じままですが、CTE を作成および設定するためのクエリ プランの部分は、結合を含むクエリで後で使用されると劇的に変化します。

私の質問は、CTE の作成と設定のクエリ プランが、その後の使用方法によって変更されるのはなぜですか。一時テーブルはそうではありません。また、どのようなシナリオで、CTE が一時テーブルよりも優れたパフォーマンスをもたらすでしょうか?

* 注: テーブル変数も使用しましたが、これは一時テーブル アプローチに匹敵します。

ありがとう

0 投票する
4 に答える
51659 参照

sql - CTEの後にifステートメントを使用するにはどうすればよいですか(SQL Server 2005)

昨夜、私はこのような単純なT-SQLプログラムを書いていました

コンパイル後、「ifの近くのステートメントが正しくありません」のようなエラーがスローされていることがわかりました

なにが問題ですか?

しかし、私は他の方法を使用してそれを行いました。しかし、なぜそれが機能しなかったのか知りたかったのです!

0 投票する
4 に答える
1786 参照

sql - SQLServerで一連のデータを再シーケンスします

私はこのような値の表を持っています:

このテーブルには、次のような行があります

Name2列などの順序に基づいてシーケンスを更新(UPDATE SET)するための最良の方法が必要なので、再シーケンスすると値は次のようになります。

これはCTEのROW_NUMBEROVER()スタイルで実行できると確信していますが、正確な構文はわかりません。

0 投票する
4 に答える
15589 参照

sql - 一度使用した CTE にアクセスできないのはなぜですか?

私のストアドプロシージャは次のようになります。

1回しか使えないの?

0 投票する
1 に答える
2504 参照

sql-server - SQL Azure と CTE 構文のサポート?

SQL Azure が CTE 構文をサポートしているかどうか知っている人はいますか? 具体的には;

  • WITH
  • OVER
  • ROW_NUMBER()
  • PARTITION BY
0 投票する
1 に答える
4122 参照

sql - ctes が相互に参照できる単一の select ステートメント内の複数の cte

次の質問( Multiple Select Statement )を拡張して、次のことができるかどうか知りたいです:

したがって、ここでのアクセントは次の行にあります。

cte2 内のどこで cte1 を参照していますか?

0 投票する
4 に答える
701 参照

sql-server - TSQL CTE とソートのグラフ

次の構造とサンプル データのテーブルを使用します。

次のことを達成するために CTE クエリを作成することは可能でしょうか。

再帰ステートメントで行を返すのを止めるものを書くのに苦労しています。

何か案は?

編集

GetActivities('a') を明確にします。この関数は、'a' の 'Start' アクティビティを検出し、'a' の 'Transfer' アクティビティを検出します。その時点で、関数は「b」を使用して再帰し、その結果、サンプル データを使用して「c」を使用できます。クエリは、「Transfers」を介して「a」に関連するすべてのアクティビティを返す必要があります。このアクティビティのネストは、必要なだけ深くすることができ、不明です (つまり、union はありません)。私が抱えている問題は、'b' -> 'a' など、別の 'Transfer' バックダウンがあることです。これにより、再帰クエリでループがどのように作成されるかがわかります。

もう 1 つ明確にします。アクティビティ テーブル内の転送は、スタックとして動作します。テーブルにデータが入力される方法を次に示します (C# の場合)。

0 投票する
1 に答える
3967 参照

sql - エラーを与える共通テーブル式

0 投票する
3 に答える
19296 参照

sql - 共通テーブル式を再利用するにはどうすればよいですか

ページングに共通テーブル式を使用しています。

このクエリを実行した直後に、アイテムの総数を取得するために、ほぼ同じクエリを実行します。

これらを組み合わせてみました(つまり、CTEを定義し、データをクエリしてからカウントをクエリしますが、これを行うと、2番目のクエリ(カウント)。

DBへのラウンドトリップを節約するために、これら2つのクエリを1つに結合する方法はありますか?