SQL Server(2008/2012)を使用していますが、多くの検索から同様の回答があることがわかりますが、適切な例/ポインタが見つかりません場合。 (最も一般的には20を超えるSQLを使用して列にXML構造を変換/平坦化する
<Items>
<Item>
<FormItem>
<Text>FirstName</Text>
<Value>My First Name</Value>
</FormItem>
<FormItem>
<Text>LastName</Text>
<Value>My Last Name</Value>
</FormItem>
<FormItem>
<Text>Age</Text>
<Value>39</Value>
</FormItem>
</Item>
<Item>
<FormItem>
<Text>FirstName</Text>
<Value>My First Name 2</Value>
</FormItem>
<FormItem>
<Text>LastName</Text>
<Value>My Last Name 2</Value>
</FormItem>
<FormItem>
<Text>Age</Text>
<Value>40</Value>
</FormItem>
</Item>
</Items>
だから<FormItem>
の構造が同じであることを行っているにもかかわらず、私は複数持つことができます。
私はこのデータを保持しているSQL ServerテーブルのXML列を持ちます-30)フォーム項目のセット..
私は基本的に/ FormItemの/テキストに基づいて、すなわち、以下の形式でSQLからクエリを返すように動的な列をしようとしています:
FirstName LastName Age ---> More columns as new `<FormItem>` are returned
My First Name My Last Name 39 Whatever value etc..
My First Name 2 My Last Name 2 40
だから、私は次のように持っていた瞬間に:もちろん
select
Tab.Col.value('Text[1]','nvarchar(100)') as Question,
Tab.Col.value('Value[1]','nvarchar(100)') as Answer
from
@Questions.nodes('/Items/Item/FormItem') Tab(Col)
列に私のXML行を移調していない、と明らかにとにかくフィールドに固定されている..私は、様々な「動的SQL」のアプローチをしようとしていますSQLは(私の場合は)<Text>
というノードを明確に選択して、Pivotを使用していますか?私は、各行(のコレクション内)の列の動的セットとして必要な結果を返すための魔法の組み合わせを見つけることができなかった。
非常に似たような例が数多く見られますが、解決策は私には分かりません。
感謝の気持ちで助けてください! XMLを解析
ありがとう!実際に私が必要としたとおりに動作します。実際には、表示されている例の上に別のレベルがありますが、それは実際にはをグループ化することです。しかし、重要な部分は、- の列として
非常に詳細な例のために非常に多くのありがとう! –