問題タブ [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.
sql - Cross apply を使用してテーブルをループし、UNION ALL の結果
のように動作するクエリを作成しようとしていますforeach
クエリ:
データは次のようになります。
クエリの継続:
上記のクエリはQuartile = 1
、1 から n に対して機能させ、すべての結果を結合するにはどうすればよいですか? についてのみピボットを解除します。
#SetValuesTable のデータは次のようになります。
結果(期待される出力)は次のようになります
クエリの続き:
上記の 2 つのステートメントには時間がかかります。特にソート用の Last inner join に時間がかかっています。クロスアプライを使用すると、実行時間が大幅に短縮される可能性があると思います。
sql - 追加の列とともにクロス適用
私は2つのテーブルを持っています 1. #SetValuesTable
2.#labelTempTab
のデータは次の#SetValuesTable
ようになります。
のデータは次の#labelTempTab
ようになります。
次のような結果テーブルが必要です。
クエリ:
上記のクエリの結果は次のようになります。
残りの列も取得するのを手伝ってくれる人がいますか。
注 : UNPIVOT を使用してテーブルを unpiovt しようとしましたが、パフォーマンスはあまり良くありません。クロス適用を使用すると、パフォーマンスは非常に優れています。
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:オーダー、フィルター、結合
sql - クロスアプライの使い方
CROSS APPLYの完全な使用法を理解していない可能性があるため、誰かがこれを解決するのを手伝ってくれることを願っています。
テーブルは次のようになります。
MARKテーブルには次のようなデータがあります。
ACCOUNT_DAY (たとえば 2 月) に範囲選択を行った場合の結果は、次のようになります。これは、 IDでテーブルを結合します。
以下のコードを使用すると、MARK_TIMEフィールドに間違ったデータが表示されます。それを正しくするには、どこかでJOINを使用する必要がありますか?
sql-server-2008 - クロス適用が上位 N ではなくすべての行を与える理由
私はテーブルを持っています
上記の表から上位 2 つのスコアを取得したいと考えています。これはrow_number()
関数によって行うことができます。ただし、クロス適用でも機能するはずです。しかし、私の以下のコードは、上位2つのスコアではなくすべての行を提供しています。
上記のコードの何が問題なのか教えてください。
asp.net - SQL およびレポート ビューアーで演算子を適用する
レポート ビューアーから呼び出しようとしているストアド プロシージャがあり、次のエラーが表示されます。
基になる SP は、適用演算子を使用して関数とテーブルを結合します。エラーを修正するにはどうすればよいですか?
sql-server - 複数の行に Cross Apply を使用するにはどうすればよいですか?
私はこのテーブルを持っています:
各行、Times
時間を表示したい:
だから私は次Cross apply
のように書くと知っています:
次に、各行が 2 回表示されます。
しかし、私は2回はしたくありません。Times
時間が欲しい
質問
それを行うためにクエリを強化するにはどうすればよいですか?
注意:
私の頭に浮かんだ非インテリジェントな解決策は、パラメーターTimes
の行を作成するudfを作成することですn
-そして、Cross Apply
私は単純に次のことを行います: select * from udf_toTable(Times)
)
sql-server - 動的テーブルの列をキー値行にアンピボットする
私が解決しなければならない問題は、多くの動的フィールドを持つ 1 つのテーブルから、他の構造化キー値テーブルへのデータ転送です。最初のテーブルは、別のシステムからのデータ エクスポートから取得され、次の構造を持ちます (任意の列名とデータを含めることができます): [UserID],[FirstName],[LastName],[Email],[How was your day] ,[毎週のニュースレターを受け取りますか],[18 歳以上であることを確認してください] ...
2 番目のテーブルは、データを配置する場所であり、次の構造を持っています: [UserID uniqueidentifier],[QuestionText nvarchar(500)],[Question Answer nvarchar(max)]
テーブルのピボットを解除する方法を示す多くの例を見ましたが、私の問題は、テーブル 1 に含まれる列がわからないことです。どうにかして最初のテーブルを動的にピボット解除できますか?そのため、列が何であっても、キーと値の構造に変換され、データが 2 番目のテーブルにインポートされます。
ご協力をお願いいたします。