わかりましたので、OPENXML から生成された EDGE テーブルを使用する必要があると確信しています。より良い方法がないことを確認したかっただけです。
これは、OA と MSXML を使用して、http API から直接 SQL にプルしている XML です。インポート ストアド プロシージャを作成し、xml を XML データ型としてテーブルに格納しました。これは調査の回答データです。すべての調査は異なり、時間の経過とともに変化する可能性があるため、回答の要素/列は不明です。彼らは調査のメタデータを提供し、スキーマへの道のりの約 70% を取得しますが、回答の下にメタデータに存在しない要素名があります。これは、より多くのオブジェクトを使用して調査ビルダーに機能を追加し、API でそれを考慮していないことに起因します。
だから基本的に
<xml>
<response>
<ResponseID>1</ReponseID>
<Question1>Yes</Question1>
<Question1_1_tag1>99</Question1>
</response>
</xml>
- 実際には、回答にはさらに多くの要素が含まれています。調査アンケートに 100 の質問がある場合、少なくとも 100 の要素が存在することになります。
そのため、メタデータから ResponseID と Question1 を取得できますが、特定のアンケートの列に Question1_tag1 をシュレッドする必要があります。xsd は提供されず、Question1_tag1 はメタデータのどこにも存在しませんが、キャプチャする必要があるのは絶対にデータです。これは、異なる調査からのすべての結果セットで異なる方法で発生します。その名前を列として使用し、正しいデータ型を識別する必要があります。
ここでビジネス ロジックに触れたのは、この問題を調査して読んだすべてのことから、この問題に遭遇したときは通常、要件を取得して適切にフォーマットされたデータを取得することの問題であり、それを説明したかったからです。この場合、私は本当にできません。
したがって、エッジ テーブルを使用して xml を細断処理するには、カスタム t-sql を作成する必要があります。誰かがより良い方法を考えられるかどうか興味がありました。