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

Откуда:
Сообщений: 1066
declare @t table (id int, Client varchar(50))
insert into @t (id,Client) values (1,'11')
insert into @t (id,Client) values (1,'12')
insert into @t (id,Client) values (3,'13')
insert into @t (id,Client) values (4,'14')


как написать запрос который вернет хмл такого вида:
<clients>
  <client ID="1">
    <Client>11</Client>
    <Client>12</Client>
  </client>
  <client ID="3">
    <Client>13</Client>
  </client>
  <client ID="4">
    <Client>14</Client>
  </client>
</clients>


пробовал так
SELECT t.ID '@ID', Client FROM @t t FOR XML path(N'client'), root(N'clients')
но не пойму как сделать объединение Client по значению ID


Спасибо.
18 июн 14, 18:19    [16184743]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
marvel
но не пойму как сделать объединение Client по значению ID

Сначала выбрать уникальные id. И соеденить их с таблицей
18 июн 14, 19:12    [16185012]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
marvel,

неного не то, что вы хотели, но объединить получилось
SELECT 
		Client.ID,
		Client1.Client
FROM (SELECT DISTINCT ID FROM @t) Client, (SELECT ID, Client FROM @t t1 ) [Client1]
WHERE Client.ID = Client1.ID
FOR XML AUTO


<Client ID="1">
  <Client1 Client="11" />
  <Client1 Client="12" />
</Client>
<Client ID="3">
  <Client1 Client="13" />
</Client>
<Client ID="4">
  <Client1 Client="14" />
</Client>


Может у кого ещё мысли будут
18 июн 14, 19:18    [16185036]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
with x as
(
 select distinct id from @t
)
select
 id as [@id],
 (select Client from @t where id = x.id for xml path(''), type) as [*]
from
 x
for xml path(N'client'), root(N'clients');
18 июн 14, 19:23    [16185060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить