Редактировал(а) Сергей Коршунов 2022/04/21 17:56
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | = Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) = |
2 | |||
3 | |||
4 | |||
5 | [[PIVOT>>url:https://infostart.ru/public/all/?public-filter[search]=PIVOT]] [[Транспонирование>>url:https://infostart.ru/public/all/?public-filter[search]=+%D2%F0%E0%ED%F1%EF%EE%ED%E8%F0%EE%E2%E0%ED%E8%E5]] | ||
6 | |||
7 | **В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.** | ||
8 | |||
9 | Достаточно часто возникает задача транспонирования какой-нибудь таблицы, то есть превращения конкретных строк таблицы в отдельные столбцы. Рассмотрим как решается эта задача на простом примере. | ||
10 | |||
11 | Допустим, в справочнике номенклатуры у нас есть табличная часть "Справочник.Номенклатура.Свойства", в которой собраны свойства и их значения, ниже представлено её содержимое: | ||
12 | |||
13 | |||
14 | |**Ссылка**|**Свойство**|**Значение** | ||
15 | |Монитор BENQ GW2480 23.8"|Размер диагонали (дюймы)|23,8 | ||
16 | |Монитор BENQ GW2480 23.8"|Разрешение|1920x1080 | ||
17 | |Монитор BENQ GW2480 23.8"|Тип матрицы|IPS | ||
18 | |Монитор IIYAMA ProLite XB2483HSU-B3 23.8"|Размер диагонали (дюймы)|23,8 | ||
19 | |Монитор IIYAMA ProLite XB2483HSU-B3 23.8"|Разрешение|1920x1080 | ||
20 | |Монитор IIYAMA ProLite XB2483HSU-B3 23.8"|Тип матрицы|VA | ||
21 | |Монитор SAMSUNG U28E590D "R", 28"|Размер диагонали (дюймы)|28,0 | ||
22 | |Монитор SAMSUNG U28E590D "R", 28"|Разрешение|3840x2160 | ||
23 | |Монитор SAMSUNG U28E590D "R", 28"|Тип матрицы|TN | ||
24 | |||
25 | |||
26 | Нужно каждое свойство определённого вида записать в собственную отдельную колонку, то есть получить таблицу вот такого вида: | ||
27 | |||
28 | |||
29 | |**Ссылка**|**РазмерДиагонали**|**Разрешение**|**ТипМатрицы** | ||
30 | |Монитор BENQ GW2480 23.8"|23,8|1920x1080|IPS | ||
31 | |Монитор IIYAMA ProLite XB2483HSU-B3 23.8"|23,8|1920x1080|VA | ||
32 | |Монитор SAMSUNG U28E590D "R", 28"|28,0|3840x2160|TN | ||
33 | |||
34 | |||
35 | Этого можно достигнуть при помощи комбинации операции группировки, агрегатной функции "МАКСИМУМ" и оператора "ВЫБОР". Ниже приведён пример запроса, который выполняет транспонирование нашей исходной таблицы "Справочник.Номенклатура.Свойства": | ||
36 | |||
37 | |||
38 | {{{ВЫБРАТЬ | ||
39 | НоменклатураСвойства.Ссылка КАК Ссылка, | ||
40 | |||
41 | МАКСИМУМ( | ||
42 | ВЫБОР | ||
43 | КОГДА НоменклатураСвойства.Свойство = &РазмерДиагонали | ||
44 | ТОГДА НоменклатураСвойства.Значение | ||
45 | ИНАЧЕ NULL | ||
46 | КОНЕЦ | ||
47 | ) КАК РазмерДиагонали, | ||
48 | |||
49 | МАКСИМУМ( | ||
50 | ВЫБОР | ||
51 | КОГДА НоменклатураСвойства.Свойство = &Разрешение | ||
52 | ТОГДА НоменклатураСвойства.Значение | ||
53 | ИНАЧЕ NULL | ||
54 | КОНЕЦ | ||
55 | ) КАК Разрешение, | ||
56 | |||
57 | МАКСИМУМ( | ||
58 | ВЫБОР | ||
59 | КОГДА НоменклатураСвойства.Свойство = &ТипМатрицы | ||
60 | ТОГДА НоменклатураСвойства.Значение | ||
61 | ИНАЧЕ NULL | ||
62 | КОНЕЦ | ||
63 | ) КАК ТипМатрицы | ||
64 | |||
65 | ИЗ Справочник.Номенклатура.Свойства КАК НоменклатураСвойства | ||
66 | ГДЕ | ||
67 | НоменклатураСвойства.Свойство В | ||
68 | ( | ||
69 | &РазмерДиагонали, | ||
70 | &Разрешение, | ||
71 | &ТипМатрицы | ||
72 | ) | ||
73 | |||
74 | СГРУППИРОВАТЬ ПО | ||
75 | НоменклатураСвойства.Ссылка}}} |