Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
el_le Member Откуда: Сообщений: 2 |
Добрый день! Имеется многоуровневая таблица со структурой подчинения сотрудников, в трех уровнях выглядит так:
Как можно ее перевернуть, чтобы она была вот такого типа:
То есть, например, двух ,TMD поместить в одну строку в подчинение RSM1. |
||||||||||||||||||||||||||||||||||||||||
26 июн 18, 10:08 [21520844] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
el_le,declare @t table (zam varchar (255), rsm varchar(255), tmd varchar(255)) insert @t values ('Садыков', 'RSM1', 'TMD1'), ('Садыков', 'RSM1', 'TMD2'), ('Садыков', 'RSM2', '-'), ('Садыков', 'RSM3', '-'), ('Садыков', 'RSM4', 'TMD3'), ('Садыков', 'RSM5', 'TMD4'); With t as ( Select dense_rank() over(Order by zam, rsm) as ID, zam, rsm, tmd From @t), t2 as ( Select distinct ID,stuff((Select distinct ', '+tmd From t as b Where a.ID = b.ID for XML path('')),1,2,'') as tmd From t as a ) --Select * From t2 Select lvl, [1] ,[2] ,[3] ,[4] ,[5] From ( Select 1 as lvl,ID,zam From t union all Select 2 as lvl,ID,rsm From t union all Select 3 as lvl,ID,tmd From t2 ) as t pivot( max(zam) for ID in ([1],[2],[3],[4],[5]) ) as p Order by lvl |
26 июн 18, 11:21 [21521256] Ответить | Цитировать Сообщить модератору |
el_le Member Откуда: Сообщений: 2 |
Kopelly, Спасибо огромное! |
26 июн 18, 11:27 [21521281] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |