Рассчитать разницу между двумя столбцами двух разных таблиц - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу рассчитать разницу между суммой заказа на покупку и суммой счета на покупку. Но я не могу получить сумму счета на покупку, то есть «pi.grand_total» и, следовательно, также не могу получить разницу «(pi.grand_total - po.grand_total)». Пожалуйста, помогите. Ниже мой запрос. Заказ на поставку = Заказ на поставку PI = Счет на покупку

 SELECT DISTINCT
    po.name AS "PO #:Link/Purchase Order:120",
    po.supplier AS "Supplier:Link/Supplier:120",
    po.Company AS "Company:Data:120",
    po.currency AS "Currency:Link/Currency:120",
    po.base_grand_total AS "Grand Total:Currency:120",
    po.status AS "Status:Data:120",
    po.per_received AS "Per Received:Data:120",
    CEILING(po.per_billed) AS "Per Billed:Data:120",
    po.delivery_date AS "Delivery Date:Date:120",
    pi.grand_total AS "Final PI Total:120",
    (pi.grand_total - po.grand_total) AS "Amount Difference:120"
    FROM
    "tabPurchase Order" as po
    LEFT JOIN "tabPurchase Invoice" as pi ON po.name = pi.parent
    WHERE

    po.per_received = 100
    AND
    CEILING(po.per_billed) < 100
    ORDER BY po.delivery_date ASC

1 Ответ

1 голос
/ 26 февраля 2020

Вы используете LEFT JOIN. Это означает, что если во второй таблице нет данных, соответствующих первой таблице, вы не получите данных из второй таблицы, но, тем не менее, ваша первая таблица вернет все свои данные.

Возможно, вам следует проверить условие соединения. Если вы хотите объединить эти две таблицы так, как хотите, используйте функцию NVL для столбца pi.grand_total. Поскольку он находится в левом соединении, он может иметь значение NULL, поэтому NULL минус po.grand_total даст вам NULL. Функция NVL превращает значения NULL в предполагаемые значения, такие как NVL(pi.grand_total,0)

Хороший пример того, как работают объединения

...