問題タブ [cross-apply]

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

sql - Cross apply を使用してテーブルをループし、UNION ALL の結果

のように動作するクエリを作成しようとしていますforeach

クエリ:

データは次のようになります。

クエリの継続:

上記のクエリはQuartile = 1 、1 から n に対して機能させ、すべての結果を結合するにはどうすればよいですか? についてのみピボットを解除します。

#SetValuesTable のデータは次のようになります。

結果(期待される出力)は次のようになります

クエリの続き:

上記の 2 つのステートメントには時間がかかります。特にソート用の Last inner join に時間がかかっています。クロスアプライを使用すると、実行時間が大幅に短縮される可能性があると思います。

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

sql - 追加の列とともにクロス適用

私は2つのテーブルを持っています 1. #SetValuesTable2.#labelTempTab

のデータは次の#SetValuesTableようになります。

のデータは次の#labelTempTabようになります。

次のような結果テーブルが必要です。

クエリ:

上記のクエリの結果は次のようになります。

残りの列も取得するのを手伝ってくれる人がいますか。

注 : UNPIVOT を使用してテーブルを unpiovt しようとしましたが、パフォーマンスはあまり良くありません。クロス適用を使用すると、パフォーマンスは非常に優れています。

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

sql-server - T-SQL クロス アプライを Oracle に変換する

相互適用を使用するこの SQL Server (T-SQL) クエリを Oracle 11g に変換しようとしています。Oracle は 12g まで Cross Apply をサポートしていないため、回避策を見つける必要があります。クエリの背後にある考え方は、Tab.Date で並べ替えられた同じ ID を持つ前の行の名前を見つける必要がある = 'Foobar' である各 Tab.Name に対するものです。(このテーブルには、名前と日付が異なる 1 つの ID の複数の行が含まれています)。

T-SQL コードは次のとおりです。

技術的には、LEFT JOIN と LAG() 関数を使用して、Oracle でこれと同じ機能を再作成することができました。

問題は、Oracle クエリを実行する順序です。Tab からすべての行をプルバックし、それらを並べ替え (LAG 関数のため)、メイン クエリに結合するときに ON ステートメントを使用してそれらをフィルター処理します。そのテーブルには何百万ものレコードがあるため、各 ID に対してそれを行うことは現実的ではありません。基本的に、サブクエリの操作の順序を変更して、単一の ID の行を引き戻し、それらの行を並べ替えて前の行を見つけ、それを結合したいと考えています。それを微調整する方法についてのアイデアはありますか?

TL;DR SQL Server:フィルター、オーダー、結合 Oracle:オーダー、フィルター、結合

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

sql - クロスアプライの使い方

CROSS APPLYの完全な使用法を理解していない可能性があるため、誰かがこれを解決するのを手伝ってくれることを願っています。

テーブルは次のようになります。

MARKテーブルには次のようなデータがあります。

ACCOUNT_DAY (たとえば 2 月) に範囲選択を行った場合の結果は、次のようになります。これは、 IDでテーブルを結合します。

以下のコードを使用すると、MARK_TIMEフィールドに間違ったデータが表示されます。それを正しくするには、どこかでJOINを使用する必要がありますか?

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

sql-server-2008 - クロス適用が上位 N ではなくすべての行を与える理由

私はテーブルを持っています

上記の表から上位 2 つのスコアを取得したいと考えています。これはrow_number()関数によって行うことができます。ただし、クロス適用でも機能するはずです。しかし、私の以下のコードは、上位2つのスコアではなくすべての行を提供しています。

上記のコードの何が問題なのか教えてください。

0 投票する
0 に答える
74 参照

asp.net - SQL およびレポート ビューアーで演算子を適用する

レポート ビューアーから呼び出しようとしているストアド プロシージャがあり、次のエラーが表示されます。

基になる SP は、適用演算子を使用して関数とテーブルを結合します。エラーを修正するにはどうすればよいですか?

0 投票する
5 に答える
6057 参照

sql-server - 複数の行に Cross Apply を使用するにはどうすればよいですか?

私はこのテーブルを持っています:

ここに画像の説明を入力

各行、Times時間を表示したい:

だから私は次Cross applyのように書くと知っています:

次に、各行が 2 回表示されます。

ここに画像の説明を入力

しかし、私は2回はしたくありません。Times時間が欲しい

質問

それを行うためにクエリを強化するにはどうすればよいですか?

注意:

私の頭に浮かんだ非インテリジェントな解決策は、パラメーターTimesの行を作成するudfを作成することですn-そして、Cross Apply私は単純に次のことを行います: select * from udf_toTable(Times))

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

sql-server - 動的テーブルの列をキー値行にアンピボットする

私が解決しなければならない問題は、多くの動的フィールドを持つ 1 つのテーブルから、他の構造化キー値テーブルへのデータ転送です。最初のテーブルは、別のシステムからのデータ エクスポートから取得され、次の構造を持ちます (任意の列名とデータを含めることができます): [UserID],[FirstName],[LastName],[Email],[How was your day] ,[毎週のニュースレターを受け取りますか],[18 歳以上であることを確認してください] ...

2 番目のテーブルは、データを配置する場所であり、次の構造を持っています: [UserID uniqueidentifier],[QuestionText nvarchar(500)],[Question Answer nvarchar(max)]

テーブルのピボットを解除する方法を示す多くの例を見ましたが、私の問題は、テーブル 1 に含まれる列がわからないことです。どうにかして最初のテーブルを動的にピボット解除できますか?そのため、列が何であっても、キーと値の構造に変換され、データが 2 番目のテーブルにインポートされます。

ご協力をお願いいたします。