Перевод строк в колонки
Наиболее частый вид работы с информацией это выборка по фильтрам типа автофильтров Excel-я. А тут:
http://akostina76.ucoz.ru/blog/2018-08-01-5261
… у меня изначально был список, в каждой строке которого район (или учреждение), экономическая статья и сумма. Но мне хотелось не списком это смотреть а сделать так чтобы экономические статьи стали колонками.
Эту операцию никак не назовёшь стандартной и точно всегда необходимой потому прикручивание такой возможности идёт постепенно, медленно и не везде.
Понятно что если очень надо, то можно заставить программиста написать всё это вручную. Но для стандартных вещей вроде как должен быть стандартный же инструментарий, упрощающей все эти вещи. Я не помню, в стандарте какого года PIVOT стал обязательной функцией языка SQL но скорее всего там какой-нибудь 1995-1998-й.
Он есть, хотя с пользовательской точки зрения выглядит довольно странно. В выборке с экономическими статьями мне потребовалось выбрать все экономические статьи руками и вписать их ему в явном виде:
Вопрос «Чего же он сам это список не сформирует?» вполне уместен… в 2018 году. А когда это делалось не менее уместным был встречный вопрос: «А что дальше с этой информацией делать?» Полученную информацию надо выводить на экран или в отчёт, а они все довольно жёстко ориентированы на любое количество строк но фиксированное количество колонок.
Эта проблема вылезает, например, в Access-е, у которого немного свой SQL, позволяющий разворачивать строки в колонки. У него и удобный конструктор есть, позволяющий не писать руками так называемый «перекрёстный запрос»:
В результате он сформировал такое:
TRANSFORM Sum(Vb.Сумма) AS [Sum-Сумма]
SELECT Vb.Учреждение, Sum(Vb.Сумма) AS [Итоговое значение Сумма]
FROM Vb
GROUP BY Vb.Учреждение
PIVOT Vb.КОСГУ;
… и действительно сам справляется с вытаскиванием в колонки всех экономических статей (КОСГУ). Проблема только в том что просмотреть в виде таблицы я его могу а для корректной работы например отчёта в нём обязательно должны быть все колонки (иначе вылет по ошибке).
Этот вопрос снимается если вывод идёт с Интернет страницу или (что тоже часть бывает) в Excel (с любым количеством колонок). Но раньше этого было совсем мало да и сейчас это никак не стандарт вывода информации.
Сюда же за компанию то, что придумали 1С-овцы в 8.2 версии, т.е настройки СКД- отчета.
В настройках в меня вначале идёт группа «Детальные записи», т.е просто вывод информации в виде полученного списка:
Так это выглядит:
… остальные годы там ниже.
А так выглядит то, что вытащено настройками таблицы:
СКД-отчёт, естественно тоже сам ищет сколько надо колонок и каких.
|