Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 07:14:04 am

Автор Тема: Лишнее количество в итоге. (QlikView)  (Прочитано 896 раз)

Оффлайн piton

  • Новичок
  • *
  • Сообщений: 22
  • Рейтинг: +5/-0
    • Просмотр профиля
Лишнее количество в итоге. (QlikView)
« : Ноябрь 17, 2016, 04:29:05 pm »
Добрый день!
У меня ситуация следующая. Есть отчет, если проще то группа, в ней энное количество товара. Далее за выбранный период отображаются в сводной таблице сколько продалось товара, и остаток только на товар где продаж больше нуля. Реализовано функцией IF() продажи больше чем ноль то остаток показываем, если меньше или равно нулю, то остаток показываем ноль. А в настройках стоит, что позиции с нулевым выражением скрываем. Проблема в том, что итоги показывают остаток больше, так как итог сначала суммирует общее количество продаж и только потом проверяется функция IF().
Можно как-то заставить итог по остаткам отображать правильную сумму?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Лишнее количество в итоге. (QlikView)
« Ответ #1 : Ноябрь 17, 2016, 07:52:16 pm »
Привет.
Вместо If пользуйтесь анализом множеств ( на эту тему сегодня новая статья вышла)
Попробуйте
sum({<[#Сумма]={'>0'}>} [#Сумма остатка])

Оффлайн piton

  • Новичок
  • *
  • Сообщений: 22
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Лишнее количество в итоге. (QlikView)
« Ответ #2 : Ноябрь 18, 2016, 09:37:05 am »
В моем случае ситуация сложнее. Пример я привел упрошенный.
В отчете продажи считаются так:
Sum({<[Дата] = {">=$(=[ДатаС])<=$(=[ДатаПо])"}>}[Кол-во движения товара реализация])
-
Sum({<[Дата] = {">=$(=[ДатаС])<=$(=[ДатаПо])"}>}[Кол-во движения товара реализация_интернет])

По мимо этого есть еще столбцы с данными.
И в итоге остаток высчитывается так:
if (  [Приход / Кол-во]=0 and [Торг. реал-ция / Кол-во]=0 and [Неторг. выбытие / Кол-во]=0 and [Вн.перем. между БЕ / Кол-во]=0 //Перечисление полей в функции if(), это название столбцов.
  , 0 ,
 Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара прихода])
 - Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара реализация])
 - Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара выбытие])
 - Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара перемещение])
 + Sum({<[Дата] = {"<$(=[ДатаС])"}>}[Кол-во движения товара исходящий остаток])

Как в данном случае применить анализ множеств я не совсем представляю.

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Лишнее количество в итоге. (QlikView)
« Ответ #2 : Ноябрь 18, 2016, 09:37:05 am »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Лишнее количество в итоге. (QlikView)
« Ответ #3 : Ноябрь 18, 2016, 08:37:30 pm »
В скрипт не думали перевести расчеты?

Оффлайн Prive

  • Новичок
  • *
  • Сообщений: 43
  • Страна: ru
  • Рейтинг: +20/-0
    • Просмотр профиля
Re: Лишнее количество в итоге. (QlikView)
« Ответ #4 : Декабрь 06, 2016, 05:39:47 pm »
Добрый день!
У меня ситуация следующая. Есть отчет, если проще то группа, в ней энное количество товара. Далее за выбранный период отображаются в сводной таблице сколько продалось товара, и остаток только на товар где продаж больше нуля. Реализовано функцией IF() продажи больше чем ноль то остаток показываем, если меньше или равно нулю, то остаток показываем ноль. А в настройках стоит, что позиции с нулевым выражением скрываем. Проблема в том, что итоги показывают остаток больше, так как итог сначала суммирует общее количество продаж и только потом проверяется функция IF().
Можно как-то заставить итог по остаткам отображать правильную сумму?
Можете поробвовать прописать свои итоги, используя функцию  Dimensionality() :
IF( Dimensionality()>=1,
     формула показателя,
     формула итого)