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

Откуда:
Сообщений: 37
Можно—ли из вот этого

DECLARE @t TABLE
(
  FieldName varchar(50), 
  PeriodId int,
  PeriodValue varchar(50)
)

insert into @t values('name1', 1, 'value1')
insert into @t values('name1', 2, 'value2')
insert into @t values('name1', 4, 'value3')
insert into @t values('name2', 1, 'value4')
insert into @t values('name3', 3, 'value5')

select * from @t


Получить вот это


DECLARE @result TABLE
(
  FieldName varchar(50), 
  Period_1 varchar(50),
  Period_2 varchar(50),
  Period_3 varchar(50),
  Period_4 varchar(50)
)

insert into @result values('name1', 'value1', 'value2', null, 'value3')
insert into @result values('name2', 'value4', null, null, null)
insert into @result values('name3', null, null, 'value5', null)

select * from @result


Т.е. не просто развернуть, но и сгруппировать по FieldName?
26 авг 19, 11:12    [21957529]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли так запивотить  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
Кнюпель
Можно—ли из вот этого

DECLARE @t TABLE
(
  FieldName varchar(50), 
  PeriodId int,
  PeriodValue varchar(50)
)

insert into @t values('name1', 1, 'value1')
insert into @t values('name1', 2, 'value2')
insert into @t values('name1', 4, 'value3')
insert into @t values('name2', 1, 'value4')
insert into @t values('name3', 3, 'value5')

select * from @t



Получить вот это


DECLARE @result TABLE
(
  FieldName varchar(50), 
  Period_1 varchar(50),
  Period_2 varchar(50),
  Period_3 varchar(50),
  Period_4 varchar(50)
)

insert into @result values('name1', 'value1', 'value2', null, 'value3')
insert into @result values('name2', 'value4', null, null, null)
insert into @result values('name3', null, null, 'value5', null)

select * from @result



Т.е. не просто развернуть, но и сгруппировать по FieldName?

да
26 авг 19, 11:20    [21957534]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли так запивотить  [new]
msLex
Member

Откуда:
Сообщений: 8091
Кнюпель
DECLARE @t TABLE
(
  FieldName varchar(50), 
  PeriodId int,
  PeriodValue varchar(50)
)

insert into @t values('name1', 1, 'value1')
insert into @t values('name1', 2, 'value2')
insert into @t values('name1', 4, 'value3')
insert into @t values('name2', 1, 'value4')
insert into @t values('name3', 3, 'value5')

select * from @t


https://docs.microsoft.com/ru-ru/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

Complex PIVOT Example
26 авг 19, 11:22    [21957538]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли так запивотить  [new]
hewlett
Member

Откуда:
Сообщений: 72
DECLARE @t TABLE
(
  FieldName varchar(50), 
  PeriodId int,
  PeriodValue varchar(50)
)

insert into @t values('name1', 1, 'value1')
insert into @t values('name1', 2, 'value2')
insert into @t values('name1', 4, 'value3')
insert into @t values('name2', 1, 'value4')
insert into @t values('name3', 3, 'value5')

select * from @t;


select * from @t p
pivot
(max(PeriodValue)
for PeriodId in ([1],[2],[3],[4])
) as pvt
26 авг 19, 16:46    [21957767]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли так запивотить  [new]
Кнюпель
Member

Откуда:
Сообщений: 37
hewlett
DECLARE @t TABLE
(
  FieldName varchar(50), 
  PeriodId int,
  PeriodValue varchar(50)
)

insert into @t values('name1', 1, 'value1')
insert into @t values('name1', 2, 'value2')
insert into @t values('name1', 4, 'value3')
insert into @t values('name2', 1, 'value4')
insert into @t values('name3', 3, 'value5')

select * from @t;


select * from @t p
pivot
(max(PeriodValue)
for PeriodId in ([1],[2],[3],[4])
) as pvt

спасибо!
27 авг 19, 09:12    [21958061]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить