Вход | Регистрация
 

Как преобразовать несколько строк запроса в одну в запросе?

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.