問題タブ [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-server - 表値関数制限性能を伴う CROSS APPLY
CROSS APPLY
パラメータ化されたテーブル値関数に問題があります。単純化された疑似コードの例を次に示します。
- テーブルの内部選択
LOT_OF_ROWS_TABLE
が多くの行を返しています。 - テーブル
LOT_OF_ROWS_TABLE
を結合し、ANOTHER_TABLE
1 行または数行のみを返します。 - テーブル値関数は非常に時間がかかり、多くの行を呼び出すと、選択が非常に長く続きます。
私の問題:
この関数は、LOT_OF_ROWS_TABLE
join だけでデータが制限されるという事実に関係なく、返されるすべての行に対して呼び出されますANOTHER_TABLE
。
選択は示されている形式でなければなりません - それは生成されますが、実際にははるかに困難です。
書き直そうとすると、非常に高速になる可能性がありますが、次のように書き直すことはできません。
知りたい:
最終的に制限された行に対してのみ関数を呼び出すように選択を強制する設定やヒント、または何かがありますか?
ありがとうございました。
編集:
テーブル値関数は非常に複雑です: http://pastebin.com/w6azRvxR。私たちが話している選択は、「ユーザーが構成」して生成したものです: http://pastebin.com/bFbanY2n .
sql-server-2008 - 複数の列に CROSS APPLY を使用する
3 日目は SQL Server を使用します。
区切られたデータの 2 列をテーブル値関数からの 1 つの出力に結合しようとしています。ここに私のデータがあります:
データを処理して、次の形式のテーブルに配置したいと考えています。
現在、この CROSS APPLY TSQL ステートメントを使用しようとしていますが、何をしているのかわかりません。
CROSS APPLY に関する私の研究には幅広い文脈があり、このシナリオでそれをどのように適用する必要があるのか わかりません。2 つのテーブル値関数からの戻り値を結合するために、CROSS APPLY と結合を追加したサブクエリが必要ですか?
これが私が最初に使用していた分割機能です(著者のクレジットを思い出せません):
クエリの編集と修正
xml - 多数の列を持つテーブルをフラット化する
100 列以上のトランザクション テーブルがあり、各行は列によって一意に識別されid
ます。データ エクスポートの要件については、エクスポート テーブルをフラットにする必要があります。つまり、id/column_name/column_value
フォーマットです。
ここで使用PIVOT
すると機能します。ただし、列の数は非常に動的な性質です。つまり、近い将来、10 個の列が追加される可能性があります。一部の列がドロップされる可能性があります。これは、名前と値のペアとしてエクスポートするもう 1 つの理由です。
ここXML PATH
に記載されているように、使用の可能性を確認しました。
ただし、問題は、キーと値のペアを初期テーブルの ID に関連付けることです。つまり、最終的なテーブルは次のようになります (既存のスキーマの SQL Fiddle はこちらです)。
等
どんな助けでも大歓迎です
sql - CROSS APPLYスローエラーを伴うSQLクエリ
サブクエリとクロス適用する次のSQLクエリがあります。
正常に動作しますが、select の 2 番目の式 ( ) を削除する,REPLACE([Message], 'Upload End. Total Row:', '') cnt_char
と、次のエラーが発生します。
メッセージ 245、レベル 16、状態 1、行 1
varchar 値 'Upload Start' をデータ型 int に変換するときに変換に失敗しました。
サブクエリの where 句は、メッセージが「アップロード開始」であるすべての行を明確に除外する必要がありますが、なぜこのエラーが発生するのですか? CROSS APPLY
を正しく使用していませんか?
sql - CROSS APPLY 使用時のキーワード「VALUES」付近の構文が正しくない
以下のステートメントの構文エラーを見て、私はいくつかの問題を抱えています。これをフィドルデモで実行しようとしましたが、動作します。Sql Server 2005 を使用しており、互換モードは 90 です。
sql - SQL を使用して次の XML からノード値を選択するにはどうすればよいですか?
私は次のものを持っています:
次の列を持つテーブルがあります。
- メンバー
- 人
- 名前
- 苗字
XML からテーブルに値を追加するにはどうすればよいですか?
私が間違っていなければ、CROSS APPLYを実行する必要がありますが、これを行う方法がわかりません。