SUM конкретный столбец с использованием group by и как избежать наименьшего объединения табличных значений из этого?

0

у меня есть запрос на выбор из 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


  • 1
    SELECT indent_no, SUM(pur_qty) x FROM purchase_order GROUP BY indent_no;
  • 0
    Да, просто добавьте indent_no, к части SELECT как сказал @Strawberry
Показать ещё 4 комментария
Теги:

2 ответа

0
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
  • 0
    ваш код в порядке спасибо @Selvaraj
0

Вы можете попробовать ниже - вам не нужно присоединяться к таблице 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
  • 0
    я должен использовать таблицу GRN, поэтому я сталкиваюсь с этой проблемой
  • 0
    @CharlesMichel, хорошо, тогда вы можете пойти со вторым решением

Ещё вопросы

Сообщество Overcoder
Наверх
Меню