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

Автор Тема: Как вычислить поле из значения связанной таблицы?  (Прочитано 102 раз)

Оффлайн arthur1974

  • Новичок
  • *
  • Сообщений: 8
  • Страна: ua
  • Рейтинг: +0/-0
    • Просмотр профиля
Подскажите пожалуйста начинающему Как вычислить поле ("sum1" в Tabl2) из значения связанной (по полю "ind") таблицы ("price" в Tabl1)?


Tabl1:
Load
    ind,
    price
FROM
.....

Tabl2:
SQL SELECT
    ind,
    kol,
    kol * price as [sum1]
from
.....

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Привет, можно использовать left join чтобы "привязать нужные поля", а затем еще раз проход через resident и уже с вычислениями.
Можно и applymap() использовать. Смотря какие объемы и какие данные. Надо тестировать на реальных данных.

Оффлайн LoryMax

  • Наставник
  • **
  • Сообщений: 66
  • Страна: ru
  • Рейтинг: +9/-0
    • Просмотр профиля
Вот тебе паттерны:
T1:
Load ind
    ,price
From ...;

Left join (T1)
SQL SELECT ind
          ,kol
From ...;

T2:
SQL SELECT ind
          ,price
          ,kol
          ,kol*price as sum1
  Resident T1;
Drop table T1;


Rem Через маппинг;
T1:
mapping
Load ind
    ,price
From ...;

T2:
SQL SELECT ind
          ,kol
          ,ApplyMap('T1',ind,0) as price
          ,kol*ApplyMap('T1',ind,0) as sum1
From ...;
Drop table T1;

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


Оффлайн arthur1974

  • Новичок
  • *
  • Сообщений: 8
  • Страна: ua
  • Рейтинг: +0/-0
    • Просмотр профиля
Спасибо за подсказки.

А по скорости вычислений и ресурсоёмкости есть разница между этими двумя способами?

Оффлайн arthur1974

  • Новичок
  • *
  • Сообщений: 8
  • Страна: ua
  • Рейтинг: +0/-0
    • Просмотр профиля
а ещё, с ApplyMap похоже так не проходит?

T1:
mapping
Load ind
    ,price
From ...;

T2:
load
...
from...

Right join
SQL SELECT ind
          ,kol
          ,ApplyMap('T1',ind,0) as price
          ,kol*ApplyMap('T1',ind,0) as sum1
From ...;
Drop table T1;

Оффлайн LoryMax

  • Наставник
  • **
  • Сообщений: 66
  • Страна: ru
  • Рейтинг: +9/-0
    • Просмотр профиля
Спасибо за подсказки.

А по скорости вычислений и ресурсоёмкости есть разница между этими двумя способами?


Стоит по факту посмотреть, какой вариант для вас будет оптимальный. Прогнать 2 варианта.
По последнему вопросу: при наличии общих полей должен сработать right join.