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

Откуда:
Сообщений: 25
Как развернуть таблицу чтобы для записей в порядке возрастания ID=identity были пары с датой старта - окончания?
Пр:
1057 '20110721 03:14:32.517' '20110721 06:14:29.920'
1057 '20110722 01:11:39.510' '20110722 03:45:03.837'
и тд.
declare @t table (id bigint, fk int, status int, ModifyDate datetime)

insert into @t
select 660806,1057,3,'20110721 03:14:32.517'
union all select 678774,1057,5,'20110721 06:14:29.920'
union all select 681998,1057,3,'20110722 01:11:39.510'
union all select 697074,1057,5,'20110722 03:45:03.837'
union all select 699812,1057,3,'20110722 04:09:20.250'
union all select 712742,1057,5,'20110722 06:10:22.147'
union all select 716750,1057,3,'20110723 02:32:14.167'
union all select 738282,1057,5,'20110723 06:09:57.897'
union all select 742524,1057,3,'20110724 00:24:30.780'
union all select 777961,1057,5,'20110724 06:47:50.090'
union all select 780789,1057,3,'20110725 00:46:01.477'
union all select 811463,1057,5,'20110725 06:09:22.137'

      SELECT
            id,
            fk,
            [3] as [start],[5] as [end]
      FROM
            @t as src
      PIVOT (
            MAX(ModifyDate) FOR status IN ([3],[5])
            ) as pvt  
25 июл 11, 11:56    [11021934]     Ответить | Цитировать Сообщить модератору
 Re: pivot?  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
philipp1, а если как - то так...
select  
t2.id, t2.fk, t3.ModifyDate as start, 
(select t1.ModifyDate  from @t t1 where t1.id = t2.id and t1.status = 5) as [end]
from @t t2 full outer join @t t3 on t2.id = t3.id and t2.status = 3 
where t2.id is not null
25 июл 11, 13:02    [11022454]     Ответить | Цитировать Сообщить модератору
 Re: pivot?  [new]
philipp1
Member

Откуда:
Сообщений: 25
MrBlackJack, ну как бы результат - тот же. Таблица разрежена.
25 июл 11, 13:38    [11022756]     Ответить | Цитировать Сообщить модератору
 Re: pivot?  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
philipp1, понял, пример проглядел...) И подумал не то, что надо было подумать)))
25 июл 11, 14:02    [11022937]     Ответить | Цитировать Сообщить модератору
 Re: pivot?  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
А вот так))

select q.id, q.fk, q.start, q1.[end] from 
(
select t1.id as id, t1.fk as fk, t1.ModifyDate as start, 
row_number() over(order by t1.id) as  row1   from @t t1 
where t1.status = 3
) q
inner join 
(
select t2.id, t2.fk, t2.ModifyDate as [end], 
row_number() over(order by t2.id) as  row2   from @t t2 
where t2.status = 5
) q1 on q.row1 = q1.row2 and q.fk = q1.fk
25 июл 11, 14:23    [11023092]     Ответить | Цитировать Сообщить модератору
 Re: pivot?  [new]
philipp1
Member

Откуда:
Сообщений: 25
philipp1, сделал подобно этому
25 июл 11, 15:29    [11023541]     Ответить | Цитировать Сообщить модератору
 Re: pivot?  [new]
MrBlackJack
Member

Откуда:
Сообщений: 43
philipp1, OK
25 июл 11, 15:32    [11023566]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить