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

Откуда:
Сообщений: 131
Помогите написать запрос

Дананные в таблице:
|_tid |_action |_Table |_Action
171772940043096 d _Task9 <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root>
|_row
86E711C5-7B48-4AA5-A628-58CDDB8ED27E
171772940043098 i _Task9 <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root> 6B375D0A-5802-4D57-B2B4-94FA42A89E44
171772940043250 d _Task9 <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root> 1C902610-FBCC-40AE-BA62-16E7D8538847
171772940043251 i _Task9 <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root> B5C9AA82-18F1-4F7F-9DD2-024F3E14E7CE
171772940043397 i _Task9 <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root> 6E55A917-7336-405D-B7FD-C4CCE6270029
171772940043442 d _Task9 <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root> 62AA4564-E8EC-4428-9347-8807A824EC1E
171772940043443 i _Task9 <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root> 5509F830-71A0-4C2D-B858-865CCF59BD8E
171772940043500 d _Task9 <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root> D8262F7F-FEBE-4667-9B7C-38B4FFA2D07B
171772940043501 i _Task9 <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root> 9E05A6EE-0DA9-4FC9-A9EA-ED282EAB0587



select * into ##Obj_Table from table

declare @Command nvarchar(max)
Set @Command='
Set nocount on
Select max(_tid),_action,_table,
cast((Select _xml.query(''/root/row'') from ##Obj_Table _2 where _2._action=_1._action for xml path(''''), root) as xml) _xml
from ##Obj_Table _1(nolock)
where _row in (SELECT _row FROM ##Obj_Table _1(nolock)
where exists(select 1
from ##Obj_Table _2(nolock)
where _1._xml.value(''(/root/row/@_IDRRef)[1]'',''binary(16)'')=_xml.value(''(/root/row/@_IDRRef)[1]'',''binary(16)'')
having max(_tid)=_1._tid
)
)
group by _action, _table
'
exec sp_executesql @Command

drop table ##Obj_Table

Первый подзапрос разбирает xml, клеит xml по _action
Второй отбирает последние записи (старшие)
Как в первый запрос передать "_row"?
Итог должна получиться 1 строка с xml d котором 2 строки

171772940043251 | i | _Task9 |
<root>
<row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" />
<row _IDRRef="v9kABCPPSMER3mcFge6NUg==" />
</root>
2 июл 09, 21:40    [7370824]     Ответить | Цитировать Сообщить модератору
 Re: Трудный запрос  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Рекомендации по оформлению сообщений в форуме п.6
2 июл 09, 21:43    [7370828]     Ответить | Цитировать Сообщить модератору
 Re: Трудный запрос  [new]
god44
Member

Откуда:
Сообщений: 131
Дананные в таблице:

Create table [table](_tid bigint,_action char(1), _table varchar(128), _xml xml, _row uniqueidentifier)
insert into [table] values(171772940043096,'d', '_Task9' ,'<root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root>', '86E711C5-7B48-4AA5-A628-58CDDB8ED27E')
insert into [table] values(171772940043098 'i',' _Task9',' <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root>','6B375D0A-5802-4D57-B2B4-94FA42A89E44')
insert into [table] values(171772940043250 'd',' _Task9',' <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root> ','1C902610-FBCC-40AE-BA62-16E7D8538847')
insert into [table] values(171772940043251 'i',' _Task9',' <root><row _IDRRef="uCEAFRd6Aw0R3lG6hrXbsg==" /></root>',' B5C9AA82-18F1-4F7F-9DD2-024F3E14E7CE')
insert into [table] values(171772940043397 'i',' _Task9',' <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root>',' 6E55A917-7336-405D-B7FD-C4CCE6270029')
insert into [table] values(171772940043442 'd',' _Task9',' <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root>',' 62AA4564-E8EC-4428-9347-8807A824EC1E')
insert into [table] values(171772940043443 'i',' _Task9',' <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root>',' 5509F830-71A0-4C2D-B858-865CCF59BD8E')
insert into [table] values(171772940043500 'd',' _Task9',' <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root>',' D8262F7F-FEBE-4667-9B7C-38B4FFA2D07B')
insert into [table] values(171772940043501 'i',' _Task9',' <root><row _IDRRef="v9kABCPPSMER3mcFge6NUg==" /></root>',' 9E05A6EE-0DA9-4FC9-A9EA-ED282EAB0587')
2 июл 09, 22:49    [7370924]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить