Имя: Пароль:
1C
 
Как преобразовать несколько строк запроса в одну в запросе?
0 Родом из детства
 
28.12.21
15:15
Добрый день, и с наступающем, товарищи.
Задача следующая:
У нас есть р/с, который хранит в себе загруженные в производственный котёл материалы, по некоторым типам(композиции).
То есть:
Номенклатура | Хар-ка | тип Композиции | Вес загружено    - ЭТО ВРЕМЕННАЯ ТАБЛИЦА "ВТ_ЗагруженныеМатериалы"
ном1            хар1        ПВД                5
ном2            хар2        ПВД                5
ном3            хар3        ПНД                3
ном4            хар4        ЛИН                4

Нужно преобразовать данную таблицу в следующую:
ВсегоПВД | ВсегоПНД | ВсегоЛИН
   10         3          4
Делал так:
|ВЫБРАТЬ
    |    ЗагруженныеВКотёлМатериалы.Номенклатура КАК Номенклатура,
    |    ЗагруженныеВКотёлМатериалы.Характеристика КАК Характеристика,
    |    ЗагруженныеВКотёлМатериалы.Упаковка КАК Упаковка,
    |    ЗагруженныеВКотёлМатериалы.ВидКомпозиции КАК ВидКомпозиции,
    |    ЗагруженныеВКотёлМатериалы.ВесНетто КАК ВесНетто,
    |    ЗагруженныеВКотёлМатериалы.Количество КАК Количество
    |ПОМЕСТИТЬ ВТ_ЗагруженныеВКотёлМатериалы
    |ИЗ
    |    РегистрСведений.ЗагруженныеВКотёлМатериалы КАК ЗагруженныеВКотёлМатериалы
    |ГДЕ
    |    ЗагруженныеВКотёлМатериалы.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
    |    И НЕ ЗагруженныеВКотёлМатериалы.Распределена
    |    И ЗагруженныеВКотёлМатериалы.ПроизводственнаяПлощадка = &ПроизводственнаяПлощадка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    СУММА(ЕСТЬNULL(ВТ_ЗагруженныеВКотёлМатериалы1.ВесНетто, 0)) КАК ЗагруженоПВД,
    |    СУММА(ЕСТЬNULL(ВТ_ЗагруженныеВКотёлМатериалы2.ВесНетто, 0)) КАК ЗагруженоПНД,
    |    СУММА(ЕСТЬNULL(ВТ_ЗагруженныеВКотёлМатериалы3.ВесНетто, 0)) КАК ЗагруженоЛИН
    |ПОМЕСТИТЬ ВТ_ЗагруженныеВКотёлМатериалыСгруп
    |ИЗ
    |    ВТ_ЗагруженныеВКотёлМатериалы КАК ВТ_ЗагруженныеВКотёлМатериалы
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗагруженныеВКотёлМатериалы КАК ВТ_ЗагруженныеВКотёлМатериалы1
    |        ПО ВТ_ЗагруженныеВКотёлМатериалы.Номенклатура = ВТ_ЗагруженныеВКотёлМатериалы1.Номенклатура
    |            И ВТ_ЗагруженныеВКотёлМатериалы.Характеристика = ВТ_ЗагруженныеВКотёлМатериалы1.Характеристика
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗагруженныеВКотёлМатериалы КАК ВТ_ЗагруженныеВКотёлМатериалы2
    |        ПО ВТ_ЗагруженныеВКотёлМатериалы.Номенклатура = ВТ_ЗагруженныеВКотёлМатериалы2.Номенклатура
    |            И ВТ_ЗагруженныеВКотёлМатериалы.Характеристика = ВТ_ЗагруженныеВКотёлМатериалы2.Характеристика
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗагруженныеВКотёлМатериалы КАК ВТ_ЗагруженныеВКотёлМатериалы3
    |        ПО ВТ_ЗагруженныеВКотёлМатериалы.Номенклатура = ВТ_ЗагруженныеВКотёлМатериалы3.Номенклатура
    |            И ВТ_ЗагруженныеВКотёлМатериалы.Характеристика = ВТ_ЗагруженныеВКотёлМатериалы3.Характеристика
    |ГДЕ
    |    ВТ_ЗагруженныеВКотёлМатериалы1.ВидКомпозиции = &ПеречислениеВидыПолиэтиленаКомпозицииПВД
    |    И ВТ_ЗагруженныеВКотёлМатериалы2.ВидКомпозиции = &ПеречислениеВидыПолиэтиленаКомпозицииПНД
    |    И ВТ_ЗагруженныеВКотёлМатериалы3.ВидКомпозиции = &ПеречислениеВидыПолиэтиленаКомпозицииЛИН
    |;
Результат пустой, может, кто-нибудь сможет помочь?)
1 lEvGl
 
гуру
28.12.21
15:27
что за ерунда..
но пустой потому что в ВТ помещается
2 Родом из детства
 
28.12.21
15:29
(1) не понял
3 lEvGl
 
гуру
28.12.21
15:30
(2) что именно
4 Родом из детства
 
28.12.21
15:31
(3) почему он должен быть пустым при помещении в ВТ?
5 Кир Пластелинин
 
28.12.21
15:35
закономерно пустой из-за второго пакета и условия. что мешает объединить? 3 вт, каждая со своим "видом композиции"
6 Родом из детства
 
28.12.21
15:37
(5) там же левое соединение
7 Родом из детства
 
28.12.21
15:37
Насчет объединения - да, должно сработать, спасиб
8 Кир Пластелинин
 
28.12.21
15:38
(6) а условие в "где" не смущает?
9 Родом из детства
 
28.12.21
15:39
(8) это условие же не к основной таблице, с которой мы соединяем, а к подтаблицам
10 Родом из детства
 
28.12.21
15:40
А стоп, там же последовательность другая, ну да
11 lEvGl
 
гуру
28.12.21
15:42
но пустой все равно из за вт
12 patapum
 
28.12.21
16:39
А зачем ты таблицу с ней же 3 раза соединяешь?
Вычисляй каждое поле выбором, и все.
СУММА(ВЫБОР КОГДА ВТ_ЗагруженныеВКотёлМатериалы.ВидКомпозиции = &ПеречислениеВидыПолиэтиленаКомпозицииПВД ТОГДА ВТ_ЗагруженныеВКотёлМатериалы1.ВесНетто ИНАЧЕ 0 КОНЕЦ) КАК ЗагруженоПВД
13 МихаилМ
 
28.12.21
16:56
А если добавится 4-й тип  пленки - Ваш запрос нужно будет переделывать.
те - говнокод.
14 H A D G E H O G s
 
28.12.21
16:59
Загруженные в котел материалы порадовали счоей незамутненной абстракцией.
Работники из ада пожаловали на форум.
15 lEvGl
 
гуру
28.12.21
17:30
(14) абстракция что надо, проги далеки от реалий
(13) да хрен знает, что ему там нужно, так то скд нарисует как надо и с новыми и без старых
он так и не увидел второе помещение в вт.. веревки и мыла
16 Said_We
 
17.01.22
12:11
(0) Левое соединение не нужно. Обычный выбор когда по каждому полю из одной таблицы и три суммы.