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

Откуда:
Сообщений: 3
Здравствуйте, коллеги!

Хочу, по всей видимости, того, что SQL Server либо не умеет, либо очень сложно...
Мне нужно, чтобы на табличку вида:
select '1' a, '2' b
union all
select '3' a, '4' b


запрос возвратил xml вида:

<fi>
    <f name='a'>1</f>
    <f name='b'>2</f>
</fi>
<fi>
    <f name='a'>3</f>
    <f name='b'>4</f>
</fi>


то есть, чтобы имена полей были в значении атрибута name, а значения полей - в тексте тега. Долго боролся с for xml explicit, его синтаксисом вида tagname!tagid!attrname!directive, но не придумал результат. Лучшее, что получилось:

<fi>
    <f name="a" name="b">12</f>
</fi>
<fi>
    <f name="a" name="b">34</f>
</fi>


то есть теги f склеиваются и дублируется атрибут name.

Подскажите, пожалуйста, как можно решить эту головоломку =)
12 окт 12, 19:28    [13310840]     Ответить | Цитировать Сообщить модератору
 Re: сложный select for xml  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
WITH Test AS (SELECT * FROM (VALUES
	 (1,2)
	,(3,4)
) Test(a,b))
	SELECT	 'a'	AS [f/@name]
		, a	AS [t/text()]
		,NULL	AS [text()]
		,'b'	AS [f/@name]
		, b	AS [t/text()]
	FROM	Test
	FOR XML Path('fi'),Root('Root')
12 окт 12, 20:05    [13311008]     Ответить | Цитировать Сообщить модератору
 Re: сложный select for xml  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Mnior
WITH Test AS (SELECT * FROM (VALUES
	 (1,2)
	,(3,4)
) Test(a,b))
	SELECT	 'a'	AS [f/@name]
		, a	AS [f/text()]
		,NULL	AS [text()]
		,'b'	AS [f/@name]
		, b	AS [f/text()]
	FROM	Test
	FOR XML Path('fi'),Root('Root')
12 окт 12, 20:06    [13311012]     Ответить | Цитировать Сообщить модератору
 Re: сложный select for xml  [new]
Exproment
Member

Откуда:
Сообщений: 416
breezemaster, вам вот сюда сначала надо было заглянуть а потом писать на форум
12 окт 12, 20:07    [13311017]     Ответить | Цитировать Сообщить модератору
 Re: сложный select for xml  [new]
breezemaster
Member

Откуда:
Сообщений: 3
Mnior,

спасибо огромное!!! второй ваш ответ - именно то, что требовалось!
плюс вам в карму =)
14 окт 12, 13:56    [13315567]     Ответить | Цитировать Сообщить модератору
 Re: сложный select for xml  [new]
breezemaster
Member

Откуда:
Сообщений: 3
Exproment
breezemaster, вам вот сюда сначала надо было заглянуть а потом писать на форум

вам спасибо за познавательную ссылку, но большой нереспект за снобистский тон
14 окт 12, 13:57    [13315569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить