Всем привет.
В регистре сведений есть такие записи:
Серия | Участок | Дата
--------------------------
123 | 1 | 12.03.12
123 | 2 | 15.03.12
123 | 3 | 17.03.12
Мне нужно "сгоризонталить" это в такую таблицу:
Серия | Уч. 1 | Уч. 2 | Уч. 3
-------------------------------------
123 | 12.03.12| 15.03.12| 17.03.12
В последствии я хочу выгрузить это все во временную таблицу, и уже к ней обращаться в других запросах.
Как лучше это сделать? Я пробовал свернуть - но выборка, программное растусовывание по столбцам и сворачивание выполняются очень медленно.
Может есть способ сделать это побыстрее?
(2) - Не-не-не... Я забыл написать - Участков строго 3 - и более того, они тут в перечислениях. Т.е. ни больше, ни меньше. Проблема с левыми соединениями состоит вот в чем: кроме этих колонок в регистре сведений - есть еще одно измерение. И отбор в других запросах нужно производить БЕЗ него. А из-за этого все тормозит. Без одного измерения он ищет оч медленно. Вот я и подумал - выгрузить все без этого измерения в ТЗ, запихнуть эту радость во временную таблицу, и выбирать оттуда.
(4) Сейчас все работает левыми соединениями - т.е. я выбираю ЛС - дату 1 участка, второго, и третьего. Но из-за того, что мне не нужно учитывать 1 столбец - он выбирает их оч долго, т.к. без одного измерения лопатит.
Или я не понял вашего предложения?
ВЫБРАТЬ
ТЗ.Серия,
МАКСИМУМ(ВЫБОР
КОГДА ТЗ.Участок = 1
ТОГДА ТЗ.ДатаД
ИНАЧЕ NULL
КОНЕЦ) КАК Поле1,
МАКСИМУМ(ВЫБОР
КОГДА ТЗ.Участок = 2
ТОГДА ТЗ.ДатаД
ИНАЧЕ NULL
КОНЕЦ) КАК Поле2,
МАКСИМУМ(ВЫБОР
КОГДА ТЗ.Участок = 3
ТОГДА ТЗ.ДатаД
ИНАЧЕ NULL
КОНЕЦ) КАК Поле3
ИЗ
ТЗ КАК ТЗ
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший