у меня есть запрос на выбор из 3 таблиц, использующих левые объединения, по которым я хочу сумму второго значения столбца таблицы, но добавив третье объединение таблицы, мы получим дополнительный столбец при суммировании значения второго столбца таблицы, мне нужно этого избежать
здесь пояснения, отступы (таблица 1)
indent_no | indent_name | request_qty
1131 AAA 834
order_order (таблица 2)
pur_id | pur_qty | indent_no
121 34 1131
122 100 1131
123 10 1131
грн (таблица 3)
grn_no | grn_val | pur_id
1 34 121
2 23 121
3 21 122
мой запрос, чтобы получить сумму (purchase_order.pur_qty) это должно быть 144 правильно, но я получаю 178, потому что таблица grn содержит 2 строки для pur_id (121) пожалуйста, обратите внимание, что я могу разрешить использовать предложение group by только для indents.indent_no
я попытался получить 144, но получил 178... вижу, что вы можете получить реальный результат, если вы используете группу по purchase_order.pur_id и с выбором суммы (purchase_order.pur_qty)/count (grn.pur_id), но я не могу использовать группу по столбцу кроме indents.indent_no
select sum(purchase_order.pur_qty) from indents
left join purchase_order on purchase_order.indent_no = indents.indent_no
left join grn on grn.pur_id = purchase_order.pur_id
group by indents.indent_no
я хочу результат
indent_no sum(purchase_order.pur_qty) SUM(grn_val)
1131 144 78
Try this query,
select indents.indent_no,sum(DISTINCT(purchase_order.pur_qty)),sum(grn.grn_val) from indents
left join purchase_order on purchase_order.indent_no = indents.indent_no
left join grn on grn.pur_id = purchase_order.pur_id
group by indents.indent_no
Вы можете попробовать ниже - вам не нужно присоединяться к таблице GRN, поскольку вы хотите только сумму покупки кол-во
select indents.indent_no,sum(purchase_order.pur_qty) from indents
left join purchase_order on purchase_order.indent_no = indents.indent_no
group by indents.indent_no
Если вам нужно присоединиться к grn table, то вы можете сделать это, используя подзапрос grn table -
Вы видите, что таблица grn имеет несколько значений одного идентификатора покупки и является причиной дублирования, и вы получаете неправильный результат из текущего запроса
select indents.indent_no,sum(purchase_order.pur_qty) from indents
left join purchase_order on purchase_order.indent_no = indents.indent_no
left join (select pur_id, sum(grn_va) as gval from grn group by pur_id) as grn
on grn.pur_id = purchase_order.pur_id
group by indents.indent_no
SELECT indent_no, SUM(pur_qty) x FROM purchase_order GROUP BY indent_no;
indent_no,
к частиSELECT
как сказал @Strawberry