Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Интересная задачка по XML  [new]
BJValentine
Member

Откуда:
Сообщений: 127
Всем привет!

А можно как-то создать запрос который бы делал XML таким образом чтобы одно поле было node, а второе его value не прибегая к dynamic sql? Например, имеем пару полей: question, answer. Значения такие:

question1, value1
question2, value2

На выходе нужен XML вида

<question1>value1</question1>
<question2>value2</question2>


Можно как-то этого добиться стандартными методами?
23 фев 16, 13:48    [18853596]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задачка по XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
И что тут интересного ?
Всего то нужно сделать анпивот и получить таблицу

question1 question2
value1 value2
23 фев 16, 13:53    [18853610]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задачка по XML  [new]
BJValentine
Member

Откуда:
Сообщений: 127
Отлично, но как быть если вопросов неизвестное заранее количество?
23 фев 16, 13:59    [18853627]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задачка по XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
BJValentine
но как быть если вопросов неизвестное заранее количество?

Сделать это количество известным.
23 фев 16, 14:00    [18853629]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задачка по XML  [new]
BJValentine
Member

Откуда:
Сообщений: 127
То есть, динамического запроса не избежать?
23 фев 16, 14:05    [18853647]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задачка по XML  [new]
Glory
Member

Откуда:
Сообщений: 104751
declare @t table(id int, f1 varchar(50), f2 varchar(50))
insert @t values(1, 'q1', 'v1')
insert @t values(2, 'q2', 'v2')
insert @t values(3, 'q3', 'v3')

declare @x varchar(max)
set @x = ''
SELECT @x = @x +'<'+[f1]+'>' + [f2]+ '</'+[f1]+'>'  from @t a

select @x, cast(@x as xml)
 
23 фев 16, 14:34    [18853729]     Ответить | Цитировать Сообщить модератору
 Re: Интересная задачка по XML  [new]
LoopN
Guest
XML не должен иметь название элементов qust1,qust2,qust3 ... qustN. Вы структуру XML документа нарушили.

Если нужна нумерация это делается с помощью атрибутов: <quest ID="1">TEXT</quest><quest ID="2">TEXT2</quest>
23 фев 16, 14:44    [18853745]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить