|
Создание колонок из строк в запросе | ☑ | ||
---|---|---|---|---|
0
CMblCL
27.12.16
✎
15:00
|
Пытаюсь найти более быстрое решение задачи.
Есть следующая таблица: Объект_____Свойство______ЗначениеСвойства ================================== Объект1____Свойство1_______Значение1 Объект1____Свойство2_______Значение2 Объект1____Свойство3_______Значение3 Объект2____Свойство1_______Значение4 Объект2____Свойство2_______Значение5 Объект2____Свойство3_______Значение6 Объект3____Свойство2_______Значение7 Объект3____Свойство3_______Значение8 Как из этой таблицы получить таблицу следующего вида в запросе: Объект__Свойство1__Свойство2__Свойство3 ======================================= Объект1_Значение1__Значение2__Значение3 Объект2_Значение4__Значение5__Значение6 Объект3____NULL____Значение7__Значение8 На данный момент я создаю 3 отдельные временные таблицы из исходной и объединяю их внутренним соединением по объекту (строки где какое либо свойство не заполнено не нужны). Это работает не самым быстрым образом. Может есть другие варианты? |
|||
1
f_vadim
27.12.16
✎
15:13
|
транспонирование в запросе
|
|||
2
Garykom
гуру
27.12.16
✎
15:13
|
Делать это не в запросе
|
|||
3
Alexandr_U1982
27.12.16
✎
15:30
|
ВЫБРАТЬ
"Объект1" КАК Объект, "Свойство1" КАК Свойство, "Значение1" КАК ЗначениеСвойства ПОМЕСТИТЬ ВТ_Таблица ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект1", "Свойство2", "Значение2" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект1", "Свойство3", "Значение3" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект2", "Свойство1", "Значение4" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект2", "Свойство2", "Значение5" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект2", "Свойство3", "Значение6" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект3", "Свойство2", "Значение7" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект3", "Свойство3", "Значение8" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Данные.Объект КАК Объект, МАКСИМУМ(Данные.Свойство1) КАК Свойство1, МАКСИМУМ(Данные.Свойство2) КАК Свойство2, МАКСИМУМ(Данные.Свойство3) КАК Свойство3 ИЗ (ВЫБРАТЬ ВТ_Таблица.Объект КАК Объект, ВТ_Таблица.ЗначениеСвойства КАК Свойство1, NULL КАК Свойство2, NULL КАК Свойство3 ИЗ ВТ_Таблица КАК ВТ_Таблица ГДЕ ВТ_Таблица.Свойство = &Свойство1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_Таблица.Объект, NULL, ВТ_Таблица.ЗначениеСвойства, NULL ИЗ ВТ_Таблица КАК ВТ_Таблица ГДЕ ВТ_Таблица.Свойство = &Свойство2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_Таблица.Объект, NULL, NULL, ВТ_Таблица.ЗначениеСвойства ИЗ ВТ_Таблица КАК ВТ_Таблица ГДЕ ВТ_Таблица.Свойство = &Свойство3) КАК Данные СГРУППИРОВАТЬ ПО Данные.Объект |
|||
4
Лохматые Уши
27.12.16
✎
15:32
|
(0) Для каждого Стр Из ТЗ Цикл
....... КонецЦикла |
|||
5
CMblCL
27.12.16
✎
15:35
|
(3) Спасибо, попробую
|
|||
6
Alexandr_U1982
27.12.16
✎
15:40
|
ВЫБРАТЬ
"Объект1" КАК Объект, "Свойство1" КАК Свойство, "Значение1" КАК ЗначениеСвойства ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект1", "Свойство2", "Значение2" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект1", "Свойство3", "Значение3" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект2", "Свойство1", "Значение4" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект2", "Свойство2", "Значение5" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект2", "Свойство3", "Значение6" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект3", "Свойство2", "Значение7" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Объект3", "Свойство3", "Значение8" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Объект КАК Объект, МАКСИМУМ(ВЫБОР КОГДА ВТ_Таблица.Свойство = &Свойство1 ТОГДА ВТ_Таблица.ЗначениеСвойства ИНАЧЕ NULL КОНЕЦ) КАК Свойство1, МАКСИМУМ(ВЫБОР КОГДА ВТ_Таблица.Свойство = &Свойство2 ТОГДА ВТ_Таблица.ЗначениеСвойства ИНАЧЕ NULL КОНЕЦ) КАК Свойство2, МАКСИМУМ(ВЫБОР КОГДА ВТ_Таблица.Свойство = &Свойство3 ТОГДА ВТ_Таблица.ЗначениеСвойства ИНАЧЕ NULL КОНЕЦ) КАК Свойство3 ИЗ ВТ_Таблица КАК ВТ_Таблица СГРУППИРОВАТЬ ПО ВТ_Таблица.Объект |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |