używam SQL Server (2008/2012) i wiem, że istnieją podobne odpowiedzi od wielu poszukiwań, jednak nie wydaje się znaleźć odpowiednie example/wskazówki dla moich walizka.Korzystanie z SQL do transponowania/spłaszczyć strukturę XML do kolumny
Mam kolumny XML w tabeli SQL Server trzyma te dane:
<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>
Więc chociaż struktura <FormItem>
będzie taka sama, mogę mieć kilka (najczęściej nie więcej niż 20 -30) zestawy elementów formularza ..
jestem zasadniczo próbuje powrócić z kwerendy SQL w poniższym formacie, czyli dynamiczne kolumny na podstawie/FormItem/Tekst:
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
Tak, w tej chwili miałem następujące:
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)
Oczywiście, że nie dokonała transpozycji moje wiersze XML w kolumnach, i oczywiście jest ustalona z dziedzin tak .. Próbowałam różnych „Dynamiczny SQL” podejścia gdzie SQL wykonuje wyraźny wybór (w moim przypadku) węzła <Text>
, a następnie wykorzystuje pewien rodzaj Pivota? ale nie mogłem znaleźć magicznej kombinacji, która zwróciłaby potrzebne wyniki jako dynamiczny zestaw kolumn dla każdego wiersza (<Item>
w kolekcji <Items>
).
Jestem pewien, że można zrobić, widząc tak wielu bardzo podobnych przykładów, jednak znowu rozwiązanie wymyka mi!
Każda pomoc wdzięcznie otrzymana !!
Dzięki! działa tak jak potrzebowałem. Właściwie mam inny poziom powyżej pokazanego przykładu, ale tak naprawdę to jest grupa razem .. ale kluczową częścią jest pokazanie zmiennej xml węzłów - jako kolumn z powtarzającymi się wierszami
.. bardzo dziękuję za bardzo szczegółowy przykład! –