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

Откуда: г.Чернигов
Сообщений: 103
Всем доброго здоровья и хорошего настроения !
Есть задача: необходимо выбрать для сводного отчета данные, но при этом кол-во "суммарных" колонок заранее неизвестно. Кроме того, кол-во левых (сводных) колонок несколько. PIVOT явно не подходит. Попробовал все сводные колонки через разделитель объединять в одну (потом "внешним" запросом они разделяются на несколько исходных скалярными функциями) и сам запрос с PIVOT формировать как строку и выполнять EXECUTE, но в итоге получил совершенно несъедобный код на несколько экранов.
Как можно решать подобные задачи элегантнее ?

Спасибо за помощь и советы :)
7 дек 16, 15:59    [19976938]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
MsGuns,

dynamic sql
7 дек 16, 16:04    [19976963]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
MsGuns
Member

Откуда: г.Чернигов
Сообщений: 103
TaPaK, Если не сложно, можно простенький пример ?
7 дек 16, 16:08    [19976981]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
AmKad
Member

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

В случае динамического набора "суммарных" колонок я бы постарался вынести задачу транспонирования на клиента. Репортинг-средства это умеют.
7 дек 16, 16:15    [19977008]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
MsGuns,

http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query
7 дек 16, 16:18    [19977014]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
MsGuns
Member

Откуда: г.Чернигов
Сообщений: 103
TaPaK, Спасибо, разбираюсь :)
7 дек 16, 21:37    [19978312]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
MsGuns
Member

Откуда: г.Чернигов
Сообщений: 103
Решил-таки вынести транспонирование на клиента.
Решение таково (все на VBA+Excel):
Сначала выбираются неповторяющиеся значения "групп" и по ним в шаблоне создается "линейка" колонок с суммовыми (по строкам) и итоговыми (по колонкам) ячейками.
Затем запросом по сводным колонкам считаются агрегаты по "группам" и полученный рекордсет помещается на промежуточный лист.
Строки листа сканируются и данные переносятся на "отчетный" лист, причем агрегаты вносятся в соответствующие колонки "линейки".

Как-то так :)
9 дек 16, 00:26    [19982714]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование таблицы и ограничения PIVOT  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
MsGuns
Решил-таки вынести транспонирование на клиента.
Решение таково (все на VBA+Excel):
Сначала выбираются неповторяющиеся значения "групп" и по ним в шаблоне создается "линейка" колонок с суммовыми (по строкам) и итоговыми (по колонкам) ячейками.
Затем запросом по сводным колонкам считаются агрегаты по "группам" и полученный рекордсет помещается на промежуточный лист.
Строки листа сканируются и данные переносятся на "отчетный" лист, причем агрегаты вносятся в соответствующие колонки "линейки".

Как-то так :)


А код VBA можно в студию для анализа?
9 дек 16, 06:48    [19982816]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить