|
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 9
|
|||||||||||||||||||||||||||||||||||||
Перегруппировка таблицы в mssql31.10.2012, 12:57. Показов 2074. Ответов 14
Метки нет (Все метки)
Допустим, есть таблица:
Нужно сделать из этого таблицу вида:
На сколько я понимаю, можно было бы использовать массив. Задать ему размер с максимальным значением повторяющихся ID, после чего выбрать id, NUM1...NUM_MAX. Но, кажется, нет массивов в mssql. И наверняка есть способ гораздо проще, через group by, но мне не хватает пока знаний, чтобы это осуществить. Заранее спасибо за помощь! Кстати, почему-то не срабатывает bbcode на форуме, чтобы нарисовать таблицу. Сорри.
0
|
|||||||||||||||||||||||||||||||||||||
| 31.10.2012, 12:57 | |
|
Ответы с готовыми решениями:
14
Экспорт таблицы из MSSQL в Excel Экспорт таблицы из MSSQL в txt файл Перенос данных из таблицы MySQL в MSSQL |
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 31.10.2012, 13:31 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 9
|
|
| 31.10.2012, 15:08 [ТС] | |
|
0
|
|
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 31.10.2012, 15:36 | |
|
да, здесь засада. не увидел. Динамический SQL разве что
0
|
|
|
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 9
|
|||||||||||||||||||||||||||||||||||||||||
| 31.10.2012, 15:43 [ТС] | |||||||||||||||||||||||||||||||||||||||||
|
То есть мне сначала нужно сделать преобразование таблицы:
В таблицу вида:
А потом можно и сделать pivot, кол-во колонок - по максимальному NUM. Как сделать такое преобразование?
0
|
|||||||||||||||||||||||||||||||||||||||||
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 31.10.2012, 15:48 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 9
|
|
| 31.10.2012, 15:49 [ТС] | |
|
0
|
|
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
|
||
| 31.10.2012, 16:00 | ||
|
Динамический SQL в такой ситуации будет не нужен. Просто в непонадобившихся полях возвращать NULL
0
|
||
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 31.10.2012, 16:03 | |
|
Весь вопрос в том, что все поля нужно перечислить явно.
0
|
|
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
|
||
| 31.10.2012, 16:05 | ||
|
В динамическом SQL это всё равно придётся делать так или иначе.
0
|
||
|
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
|
|
| 31.10.2012, 16:17 | |
|
Что-то мне не совсем понятно, как в предложении SELECT перечислить не вручную произвольное (хотя и заранее известное) количество полей?
0
|
|
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
|
|||||||
| 31.10.2012, 16:50 | |||||||
|
Или создать шаблон (template) вот с таким текстом, к примеру:
после чего выполнить, - и можно копипастить список полей куда надо. Я там, правда, игнорировал поля IDENTITY, TIMESTAMP и вычисляемые, ибо делал для скрипта на INSERT
0
|
|||||||
|
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
|
||||||
| 31.10.2012, 19:03 | ||||||
|
Динамический Pivot: (переделывать под текущее задание нет времени - разбирайте сами код)
Админам - Можно ли мой скрипт кинуть в шапку форма MS SQL? Я уже несколько раз данный код кидал. Либо создать в шапке форума тему "Интересные задачи" или "Делимся наработками"
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 9
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 13.11.2012, 18:21 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Все-таки у меня бардак получается с этим динамическим pivot
Таблица:
Мой неправильный код:
Добавлено через 9 минут где-то же я должна задать название колонок FROM DATE_1 TILL DATE_1 CLM_1 FROM DATE_2 TILL DATE_2 CLM_2 Добавлено через 22 минуты Нет, что-то тут вообще не то. В вышеуказанном скрипте значения через запятую записываются. Короче, подскажите, как этот динамический пивот приложить к моему случаю, пожалуйста. Добавлено через 8 минут Как мне пробежаться по всем значениям ID и определить количество будущих столбцов, используя #TSP? Потом, вероятно, надо как-то создать колонку в таблицу #TSP с пронумерованными значениями для каждого ID... и уже потом сделать этот пивот..., вот только и в сам пивот надо подставить то количество колонок, которое нужно. И я не знаю не одного из этих вопросов((( help, pls Добавлено через 2 часа 25 минут Если нет такого способа.. Скажите, пжлста, как прочитать вот эту конструкцию
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
|
||||||
| 21.03.2013, 14:04 | ||||||
|
Не вполне понятно как заюзать pivot. В моем случае таблица такая:
id1 id2 value 1 1 "string1" 1 2 "string2" 2 1 "string3" Плюс куча других значений, если отбросить поле value то строки будут одинаковые. Можно как-нибудь строки схлопнуть в одну не потеряв ни одного поля, а поле value странспонировать в строку и прикрепить к остальным данным? Добавлено через 3 минуты Использовал такое решение: поскольку на позицию с id1,id2 значений value может быть не больше 5 то с помощью left join 5 раз сцепил таблицу саму с собой, вытащил из первой таблицы все нужные столбцы, а из остальных значения value. На таблицах малого объема это может и сгодится, но данных как правило много и вопрос скорости выполнения запроса стоит мегаостро. Добавлено через 4 часа 18 минут Если кому-то понадобится: воспользовался решением Ice_and_Fire'а (Получение результатов выборки в виде строки) немного модифицировав. Работает, но наверное будет лучше использовать нечто более рациональное.
0
|
||||||
| 21.03.2013, 14:04 | |
|
Помогаю со студенческими работами здесь
15
Сделать бэкап таблицы (mssql 2005)
VBA перегруппировка таблицы с одинаковым значением в столбце Конвертация таблицы MSSQL в Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|