Сравните значение одного поля в одной таблице с общей суммой одного столбца в другой таблице. - PullRequest
0 голосов
/ 28 мая 2018

У меня проблемы с выполнением запроса, чтобы сравнить, где значение столбца в одной таблице не равно сумме другого столбца в другой таблице.Ниже приведен запрос, который я пытался выполнить:

select id.invoice_no,sum(id.bank_charges),
from db2apps.invoice_d id
inner join db2apps.invoice_h ih on (id.invoice_no = ih.invoice_no)
group by id.invoice_no
having coalesce(sum(id.bank_charges), 0) != ih.tax_value
with ur;

Я пытался объединить таблицы, группы по формату и т. Д., Но безуспешно.Я действительно хочу выбрать id.invoice_no, ih.tax_value и сумму (id.bank_charges) в наборе результатов, а также получить данные, где сумма (id.bank_charges) не равна значению ih.tax_value.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Наиболее логичным способом, вероятно, является СУММА детали счета в первую очередь.

SELECT  IH.INVOICE_NO
,       IH.TAX_VALUE
FROM
    DB2APPS.INVOICE_H IH 
JOIN
(   SELECT  INVOICE_NO
    ,       COALESCE(SUM(BANK_CHARGES),0) AS BANK_CHARGES
    FROM
        DB2APPS.INVOICE_D
    GROUP BY
             INVOICE_NO
) ID
ON
    ID.INVOICE_NO = IH.INVOICE_NO
WHERE
    ID.BANK_CHARGE <> IH.TAX_VALUE

Как правило, вам никогда не нужно для использования HAVING в SQL, и часто ваш код будет более понятными легче следовать, если вы избегаете его использования (даже если оно иногда немного длиннее).

PS вы можете удалить COALESCE, если BANK_CHARGES НЕ НЕДЕЙСТВИТЕЛЕН.

0 голосов
/ 28 мая 2018

Возможно, это решит вашу проблему:

select ih.invoice_no, ih.tax_value, sum(id.bank_charges)
from db2apps.invoice_h ih left join
     db2apps.invoice_d id
     on id.invoice_no = ih.invoice_no
group by ih.invoice_no, ih.tax_value
having coalesce(sum(id.bank_charges), 0) <> ih.tax_value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...