問題タブ [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.
sql-server-2005 - どのようにして多くのトップルートを取得しますか?
多対多の親子関係テーブルがあります
会社a、b、c、d、eがあるとしましょう
このクエリで上位の親を1つ返すようになりました
bを渡すと、
私が書いたクエリは1つの最上位の親しか管理できないためです。最初のツリーのように、ツリー全体を取得できるようにするには、どのように修正しますか?
これが私のCTEです
結局、上記のロジックで、私はa、dを取得する方法を取得しますか?
sql - SQL 2005 CTE と TEMP テーブル 他のテーブルの結合で使用した場合のパフォーマンス
後続のクエリ (実際には update ステートメント) で使用する必要がある複雑なクエリがあります。CTE と一時テーブルの両方を使用してみました。CTE を使用したパフォーマンスは、一時テーブル アプローチと比べてひどいものです。15秒対ミリ秒のようなものです。後続のクエリで CTE/Temp テーブルを結合するのではなく、テストを簡素化するために、そこから * を選択しました。その場合、彼らは同じことを行います。
両方のアプローチの実行計画を見て、後続のクエリで結合を使用して、* を選択するだけです。単純な選択ではクエリ プランはほぼ同じですが、後続の選択での結合ではクエリ プランは異なります。具体的には、一時テーブルを作成および設定するためのクエリ プランの部分は同じままですが、CTE を作成および設定するためのクエリ プランの部分は、結合を含むクエリで後で使用されると劇的に変化します。
私の質問は、CTE の作成と設定のクエリ プランが、その後の使用方法によって変更されるのはなぜですか。一時テーブルはそうではありません。また、どのようなシナリオで、CTE が一時テーブルよりも優れたパフォーマンスをもたらすでしょうか?
* 注: テーブル変数も使用しましたが、これは一時テーブル アプローチに匹敵します。
ありがとう
sql - CTEの後にifステートメントを使用するにはどうすればよいですか(SQL Server 2005)
昨夜、私はこのような単純なT-SQLプログラムを書いていました
コンパイル後、「ifの近くのステートメントが正しくありません」のようなエラーがスローされていることがわかりました
なにが問題ですか?
しかし、私は他の方法を使用してそれを行いました。しかし、なぜそれが機能しなかったのか知りたかったのです!
sql - SQLServerで一連のデータを再シーケンスします
私はこのような値の表を持っています:
このテーブルには、次のような行があります
Name2列などの順序に基づいてシーケンスを更新(UPDATE SET)するための最良の方法が必要なので、再シーケンスすると値は次のようになります。
これはCTEのROW_NUMBEROVER()スタイルで実行できると確信していますが、正確な構文はわかりません。
sql - 一度使用した CTE にアクセスできないのはなぜですか?
私のストアドプロシージャは次のようになります。
1回しか使えないの?
sql-server - SQL Azure と CTE 構文のサポート?
SQL Azure が CTE 構文をサポートしているかどうか知っている人はいますか? 具体的には;
WITH
OVER
ROW_NUMBER()
PARTITION BY
sql - ctes が相互に参照できる単一の select ステートメント内の複数の cte
次の質問( Multiple Select Statement )を拡張して、次のことができるかどうか知りたいです:
したがって、ここでのアクセントは次の行にあります。
cte2 内のどこで cte1 を参照していますか?
sql-server - TSQL CTE とソートのグラフ
次の構造とサンプル データのテーブルを使用します。
次のことを達成するために CTE クエリを作成することは可能でしょうか。
再帰ステートメントで行を返すのを止めるものを書くのに苦労しています。
何か案は?
編集
GetActivities('a') を明確にします。この関数は、'a' の 'Start' アクティビティを検出し、'a' の 'Transfer' アクティビティを検出します。その時点で、関数は「b」を使用して再帰し、その結果、サンプル データを使用して「c」を使用できます。クエリは、「Transfers」を介して「a」に関連するすべてのアクティビティを返す必要があります。このアクティビティのネストは、必要なだけ深くすることができ、不明です (つまり、union はありません)。私が抱えている問題は、'b' -> 'a' など、別の 'Transfer' バックダウンがあることです。これにより、再帰クエリでループがどのように作成されるかがわかります。
もう 1 つ明確にします。アクティビティ テーブル内の転送は、スタックとして動作します。テーブルにデータが入力される方法を次に示します (C# の場合)。
sql - 共通テーブル式を再利用するにはどうすればよいですか
ページングに共通テーブル式を使用しています。
このクエリを実行した直後に、アイテムの総数を取得するために、ほぼ同じクエリを実行します。
これらを組み合わせてみました(つまり、CTEを定義し、データをクエリしてからカウントをクエリしますが、これを行うと、2番目のクエリ(カウント)。
DBへのラウンドトリップを節約するために、これら2つのクエリを1つに結合する方法はありますか?