問題タブ [for-xml]
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-2000 - SQL Server 2000 および xml 明示的
SQL Server 2000 で for xml explicit を使用すると問題が発生します (したがって、SQL 2005/8 の新しい path() は使用できません)。
基本的に、2 つのテーブルがあり、必要な XML 構造は次のとおりです。
つまり、table_1 は table_2 と 1 対多の関係にあり、その階層を作成したいと考えています。
これまでのところ、私はそれを得ることができないようです。私が得ることができた最も近いものは、table1のすべてのレコードであり、table2のすべてのレコードがtable1の最後の要素に追加されています
この種の関係を築くための助けをいただければ幸いです。
-マルシン
sql-server - このクエリからの行連結
私はこのクエリを持っています:
この結果セットを返します:
EDIFICIOS_ID ごとに TITULAR の値を連結したいので、次のようにします。
FOR XML PATH トリックを使用しようとしています。過去に使用したことがありますが、その仕組みがよくわからないため、この特定のケースに適用する方法がわかりません。アイデアを教えてください。
sql-server - t-sql 最も効率的な行から列へ? xml パスのクロス集計、ピボット
行を列に変換する最も効率的な方法を探しています。データベースの内容 (以下の実際のスキーマではありませんが、概念は似ています) を固定幅形式と区切り形式の両方で出力する必要があります。以下の FOR XML PATH クエリでは、必要な結果が得られますが、少量のデータ以外を処理する場合は、時間がかかることがあります。
ピボットを見てきましたが、見つけた例のほとんどは情報を集約しています。子行を結合して親に追加したいだけです。
また、子行の出力は固定幅の文字列または区切り文字列のいずれかになるため、列名を処理する必要がないことも指摘しておく必要があります。
たとえば、次の表があるとします。
出力する必要がある注文の場合:
また
考えや提案はありますか?SQL Server 2k5 を使用しています。
セットアップ例:
FOR XML PATH を使用:
私が望むものを出力しますが、大量のデータの場合は非常に遅くなります。子テーブルの 1 つが 200 万行を超えているため、処理時間が最大 4 時間かかります。
sql-server-2005 - 同義語に対してFORXMLAUTOを使用する
リンクされたサーバーのものの同義語に切り替えたところ、FORXML出力が正しくなくなっていることに気づきました。ビューからXML結果を返す場合、ビューにエイリアスを付けることができ、それが要素名として割り当てられます。ただし、同義語では、エイリアスを無視しているようです。私たちはまだほとんどSQL2005を使用しています。このバグは、2008年のインスタンスでは発生していないようです。これは既知の問題であり、回避策のアイデアはありますか?
たとえば、これは私たちが以前できることでした:
そして、これは同義語で起こることです:
ご覧のとおり、SQL Serverは、エイリアスではなく、実際に参照されているオブジェクトの名前を使用しているようです。素敵なエイリアスの代わりに4つの部分からなる名前を取得するため、これはクロスサーバークエリではさらに悪化します。(例:<rick_server.rick_database.dbo.Numbers number="0"/>
...)
entity-framework - FOR XML ストアド プロシージャを呼び出すエンティティ フレームワークが 2033 文字で切り捨てられる
最後に FOR XML ステートメントを使用するストアド プロシージャがあり、XML を返します。
私は .NET 4 と Entity Framework を使用しています。このストアド プロシージャの関数インポートを実行し、Entity Framework を介して呼び出そうとすると、戻り値が 2033 文字で切り捨てられます。
Entity Framework を従来の ADO.NET アプローチに置き換えて、同じ問題 (2033 文字で切り捨てられた) を持つストアド プロシージャを呼び出すようにしました。これは、これが設計によるものであり、「ExecuteXMLReader " それを克服する方法:
http://support.microsoft.com/kb/310378
これは現在、一時的な修正として機能していますが、Entity Framework 関数のインポートを使用したいので、ADO.NET コードと EF コードが混在していません。
EF で関数のインポートを使用し、XML を返し、2033 文字の制限を克服する方法はありますか?
よろしく
bgs264
sql - 「WITH XMLNAMESPACES...FOR XML PATH」の出力を変数に設定できませんか?
次のようなクエリがあります。
これを実行するとうまくいきます。ただし、XML 出力を次のような変数に設定しようとすると、問題が発生します。
これは私に構文エラーを与えるだけです:-(これを達成する方法についてのアイデアは大歓迎です.
sql-server - 互換性モードに頼らずに、Sql Server 2K8 R2 がこの xml を返すようにするにはどうすればよいですか?
現在、SQL サーバーを 2K8 R2 にアップグレード中であり、FOR XML AUTO クエリの出力が変更されています。
クエリは 3 つのテーブルから列を出力します
結果セットは、3 番目のテーブルの最後の 2 列を除いて、各列が同一である 3 つの行を返します。以下のように使用される結果
それは示していません
For XML Path を使用しようとしましたが、データをグループ化するのではなく、element1 の 3 つの個別のインスタンスを返します。
sql - SQL Server で FOR XML PATH を使用して階層データの XML 出力を取得するためのクエリ
列 NodeId、NodeName、ParentNodeId を持つテーブルがあり、SQL クエリを使用して、次のようにテーブル データ全体を Xml の形式で出力したいと考えています。SQLサーバーのFOR XML PATHモードを使用して、再帰を使用してこれを実現できると思いますが(SQL Server 2008を使用しています)、方法はわかりません。前もって感謝します
sql-server - 「select for xml」で複数のファイルに出力するにはどうすればよいですか?
お客様から、エクスポート ファイルが長すぎると苦情が寄せられています。彼らは、エクスポートを多くのファイルに分割して、ファイルごとに「n」レコード以下にすることを望んでいます。「select for xml」でこれを行う方法はありますか</p>
現在、このプロジェクトには Sql Server 2005 を使用しています。
(これが難しすぎる場合は、いつでも単一の大きなファイルを後処理して分割できます)
tsql - CTE を FOR XML 句と組み合わせるにはどうすればよいですか?
さまざまなレベルのネストを使用して XML を生成しようとしていますが、単純化しすぎるリスクがあるため、出力 XML は大まかに次の形式になります。
このために継承したデータベース スキーマでは、たまたま異なるテーブルに料金が格納されています。つまり、追加料金は、料金の発生元のテーブルに基づいて異なる方法で格納されます。
s をで使用できないことUNION
FOR XML
を考えると、CTE でいくつかのUNION
ing を行ったので、次のようにします。
今、それは信じられないほど近いです(ネストされた に注意してください<surcharge>
):
しかし、新しい要素としてではなく、要素のコンテンツとして扱われる XML 列の値をエンド クエリに含める方法を見つける必要があります。これは可能ですか、それとも新しいアプローチを取る必要がありますか?