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

Откуда:
Сообщений: 126
Что-то не выходит каменный цветок

Есть такая вот таблица:
СклонениеПадежФорма
1Именительныйкорова
1Родительныйкоровы
1Творительныйкоровой
2Именительныйбык
2Родительныйбыка
2Творительныйбыком
3Именительныймышь
3Родительныймыши
3Творительныймышью


Надо получить:
СклонениеИменительныйРодительныйТворительный
1коровакоровыкоровой
2быкбыкабыком
3мышьмышимышью


Есть ли способ это сделать на MS SQL 2016?
4 июл 17, 18:55    [20613455]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы (pivot?)  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
... MIN(CASE Падеж WHEN ... THEN ... END), ... GROUP BY Склонение
4 июл 17, 19:25    [20613513]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы (pivot?)  [new]
komrad
Member

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

+ так?

with data as 
(select '1' skl,'именительный' pad,'корова' form union all 
select '1' ,'родительный' ,'корову' union all 
select '1','творительный','коровой' union all 
select '2','именительный','бык' union all 
select '2','родительный','быка' union all 
select '2','творительный','быком' union all 
select '3','именительный','мышь' union all 
select '3','родительный','мыши' union all 
select '3','творительный','мышью'
)
select 
	skl
	,[именительный]
	,[родительный]
	,[творительный]
from data d
pivot (
min(form) for pad in ([именительный],[родительный],[творительный])) p

4 июл 17, 21:51    [20613795]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы (pivot?)  [new]
rnk
Member

Откуда:
Сообщений: 126
komrad
rnk,

+ так?

with data as 
(select '1' skl,'именительный' pad,'корова' form union all 
select '1' ,'родительный' ,'корову' union all 
select '1','творительный','коровой' union all 
select '2','именительный','бык' union all 
select '2','родительный','быка' union all 
select '2','творительный','быком' union all 
select '3','именительный','мышь' union all 
select '3','родительный','мыши' union all 
select '3','творительный','мышью'
)
select 
	skl
	,[именительный]
	,[родительный]
	,[творительный]
from data d
pivot (
min(form) for pad in ([именительный],[родительный],[творительный])) p


Вроде оно, благодарю!
5 июл 17, 10:42    [20614741]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить