Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
RuslanSharipov Member Откуда: Сообщений: 193 |
Всем привет! Есть таблица: Город Дата Значение 1 Значение2 Казань 01.06.16 11 12 Казань 01.05.16 12 13 Казань 01.04.16 13 14 Казань 01.03.16 14 15 Казань 01.02.16 15 16 Казань 01.01.16 16 17 Казань 01.12.15 17 18 Казань 01.11.15 18 19 Казань 01.10.15 19 20 Казань 01.09.15 20 21 Казань 01.08.15 21 22 Казань 01.07.15 22 23 Челны 01.06.16 23 24 Челны 01.05.16 24 25 Челны 01.04.16 25 26 Челны 01.03.16 26 27 Челны 01.02.16 27 28 Челны 01.01.16 28 29 Челны 01.12.15 29 30 Челны 01.11.15 30 31 Челны 01.10.15 31 32 Челны 01.09.15 32 33 Челны 01.08.15 33 34 Челны 01.07.15 34 35 Как превратить ее в таблицу: Город июнь, зн 1 июнь, зн 2 май, зн 1 май, зн 2 апрель, зн 1 апрель, зн 2 и т. д. Казань 11 12 12 13 13 14 Челны 23 24 24 25 25 26 столбцы в порядке убывания даты. Подскажите пожалуйста)) |
15 июл 16, 10:38 [19412922] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6802 |
RuslanSharipov, https://blogs.msdn.microsoft.com/kenobonn/2009/03/22/pivot-on-two-or-more-fields-in-sql-server/ |
15 июл 16, 10:47 [19412979] Ответить | Цитировать Сообщить модератору |
RuslanSharipov Member Откуда: Сообщений: 193 |
TaPaK, Все равно не могу перевернуть правильно таблицу, даже если вместо даты использовать сразу номер месяца и начинать с 1го месяца |
15 июл 16, 12:32 [19413850] Ответить | Цитировать Сообщить модератору |
3unknown Member Откуда: New York Сообщений: 140 |
if object_id('tempdb..#tbl') is not null drop table #tbl Create table #tbl (City nvarchar(max),t_date date,value int) insert #tbl values('Kazan','01.06.16',11), ('Kazan','01.05.16',12), ('Kazan','01.04.16',13), ('Kazan','01.03.16',14), ('Kazan','01.02.16',15), ('Kazan','01.01.16',16), ('Kazan','01.12.15',17), ('Kazan','01.11.15',18), ('Chelny','01.06.16',23), ('Chelny','01.05.16',24), ('Chelny','01.04.16',25), ('Chelny','01.03.16',26), ('Chelny','01.02.16',27), ('Chelny','01.01.16',28), ('Chelny','01.12.15',29), ('Chelny','01.11.15',30) DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); select @cols = COALESCE(@cols + ', ', '') + QUOTENAME(cast(t_date as varchar)) from (select distinct t_date from #tbl) a order by t_date desc set @query = 'SELECT City, ' + @cols + ' from ( select City ,t_date ,value from #tbl ) x pivot ( max(value) for t_date in (' + @cols + ') ) p ' print @query execute(@query) |
15 июл 16, 17:16 [19415641] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |