Имя: Пароль:
1C
1С v8
СКД
,
0 MadHead
 
19.03.12
15:56
Есть такой запрос.
ВЫБРАТЬ
   ЕСТЬNULL(ПланыПродажГод.Бренд, РеализацияГод.Бренд) КАК Бренд,
   ПланыПродажГод.КвоОборот КАК ПланГод,
   РеализацияГод.КвоОборот КАК ФактГод,
   ЕСТЬNULL(РеализацияГод.КвоОборот, 0) - ЕСТЬNULL(ПланыПродажГод.КвоОборот, 0) КАК ОтклонениеШтГод,
   ВЫБОР
       КОГДА ЕСТЬNULL(ПланыПродажГод.КвоОборот, 0) = 0
           ТОГДА 100
       ИНАЧЕ ЕСТЬNULL(РеализацияГод.КвоОборот, 0) / ПланыПродажГод.КвоОборот * 100
   КОНЕЦ КАК ОтклонениеПроцГод,
   ЕСТЬNULL(ПланыПродажГод.ЦФО, РеализацияГод.ЦФО) КАК ЦФО
ИЗ
   РегистрНакопления.ПланыПродаж.Обороты(, , , ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидЗЧ.Автомобиль)) КАК ПланыПродажГод
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Реализация.Обороты(, , , ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидЗЧ.Автомобиль)) КАК РеализацияГод
       ПО ПланыПродажГод.Бренд = РеализацияГод.Бренд
           И ПланыПродажГод.ЦФО = РеализацияГод.ЦФО

Группировка строк Бренд, группировка колонок ЦФО. Итог по колонке по среднему считается неправильно, так как в некоторых ячейках попадется значение NULL. Как правильно посчитать итог?
1 Buster007
 
19.03.12
16:01
ВЫБОР
       КОГДА ПланыПродажГод.КвоОборот Есть NULL
           ТОГДА 100
2 Buster007
 
19.03.12
16:02
избавься от NULLа, раз попадает )
3 Buster007
 
19.03.12
16:03
да и вообще
   ВЫБОР
       КОГДА ЕСТЬNULL(ПланыПродажГод.КвоОборот, 0) = 0
           ТОГДА 100
       ИНАЧЕ ЕСТЬNULL(РеализацияГод.КвоОборот, 0) / ПланыПродажГод.КвоОборот * 100
   КОНЕЦ КАК ОтклонениеПроцГод,
это можно заменить на
ЕСТЬNULL(РеализацияГод.КвоОборот, 0) / ЕСТЬNULL(ПланыПродажГод.КвоОборот,  РеализацияГод.КвоОборот) * 100
4 MadHead
 
19.03.12
16:13
(3) Нельзя. Но вопрос не в этом.
Я так понимаю NULL появляется уже в СКД когда в пересечении групировок не существует значение
5 MadHead
 
19.03.12
16:15
Я хочу получить запрос итог по полю "ОтклонениеПроцГод" там значений NULL в результате запроса нету
6 ILM
 
гуру
19.03.12
16:15
В СКД запрети NULL
7 Buster007
 
19.03.12
16:18
(4) странно что нельзя... ну да ладно, твоё дело.
если в результате NULLа нет, то откуда ему появиться при выводе?
8 MadHead
 
20.03.12
00:28
Есть выборка Запроса
Номенклатура1 10
   Склад1    7
   Склад2    3
НОменклатура2 12
   Склад2    12

Теперь пытаемся строить таблицу где группировка строк Номенклатура, а группирова колонок Склад.

Получаем
                 Склад1  Склад2
  Номенклатура1    7       3
  Номенклатура2  NULL     12

Теперь, если вывести по складу итог Среднее(Ресурс), То по складу1 выведется 7, а не 3.5. Вот я и задавал вопрос, если способ правильно вывести итог в данном случае
9 MadHead
 
20.03.12
00:29
(7) Заменить, то можно только смысла в этом не много
10 MadHead
 
23.03.12
13:39
Может сегодня подскажут
11 Axel2009
 
23.03.12
13:46
Среднее(выбор когда ресурс null тогда 0 иначе ресурс конец)
12 Лодырь
 
23.03.12
13:51
Может быть задуматься о необходимости полного соединения?
13 Axel2009
 
23.03.12
13:53
(12) и что это даст?
14 ЭсОдин
 
23.03.12
13:58
Создай временную таблицу и собери в неё всю номенклатуру и все склады (может понадобиться полное соединение складов с номенклатурой), эту таблицу соедини со своим запросом, замени NULL на 0, у тебя для каждой номенклатуры на каждом складе будет значение, в сводной таблице не будет NULL.
15 Лодырь
 
23.03.12
14:00
(14) Не совсем так. Собирать нужно не всю номенклатуру и склады а лишь те которые попадут в его запрос, верно?
16 ЭсОдин
 
23.03.12
14:01
Да, конечно.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.