問題タブ [ssms-2017]

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 に答える
150 参照

sql-server - ROW_NUMBER で必要な再帰/ループ クエリのヘルプ

フィールド内の指定された値から開始し、共有値に基づいて別の行の別のフィールドでその値を見つけて、材料の移動、それを移動するために使用される機器、およびタイミングのテーブルを逆方向​​にトレースできるようにしたい.

次の表では、たとえば、EndCode 'M' から関連するすべての行を StartCode A までさかのぼって追跡できるようにする必要があります。 'U' は StartCode 'N' に戻ります。

表では、StartCode (材料) A と B が移動して EndCode C になります。EndCode C は次に StartCodeD になり、次に StartCode E で移動して EndCode F になります。オレンジ/青の行は、材料の動きのグループを表します。

これから、「EndedAt」という名前の新しいフィールドとして、次のイベントの StartedAt 時刻をもたらす新しいテーブル/ビューを作成したいと考えています。次のようになります。

ROW_NUMBER と CTE を使用して、StartedAt を新しいフィールドとして "EndedAt" として取得する再帰クエリを作成しました。

次に、ネストされた SELECT ステートメントを使用して、EndCode 'M' に関連するすべての StartCode を検索し、テーブルをループバックして、StartCode 列で関連するすべての EndCode を検索しようとしました。これにより、いくつかの行のみが表示されます。ネストされたステートメントを数回繰り返して、さまざまな行に移動しました。

目的のテーブル/ビューを作成するために必要なすべての関連する開始/終了コードを取得するのに助けが必要です.

最終的にレポートがテーブルに添付され、選択した EndCode パラメータ (M、U など) でテーブルをフィルタリングできるようになります。