Друзья Я не могу получить правильный результат. Предлагайте, спасибо в Advance. У меня есть две таблицы и пытаются получить Количество От балансsql Левое соединение, дающее дубликаты нескольких значений
Одна из них Покупка Таблица (purchase_detail)
Pur_Date Item_Id Pur_Qty
2014-10-08 12792 25
2014-11-01 133263 20
2014-10-01 133263 2
2014-11-20 12792 10
Во-вторых, продажа Таблица (sale_detail)
Sale_Date Item_Id Sale_Qty
2014-11-17 133263 -6
2014-11-05 12792 -1
2014-11-24 133263 -2
2014-10-28 12792 -6
2014-11-05 133263 -2
После использования левое соединение SQL:
select a.pur_item, sum(a.pur_qty + b.sold_qty) as bal_qty
from purchase_item_qty_amount a left join sale_item_qty_amount b
on a.pur_item =b.sale_item where a.pur_item IN(12792,133263)
group by 1;
Результат - Но это неправильно
Item_Id Bal_qty
12792 56
133263 46
Результат - Он должен быть
Item_Id Bal_qty
12792 28
133263 12
Я предполагаю, что это должно быть '(сумма (a.pur_qty) + сумма (b.sold_qty)), как bal_qty' –
Вы дали нам две таблицы, но в вашем запросе вы ссылаетесь на две разные таблицы: – rtruszk
Вы не можете использовать соединение для этого случая, так как оно объединяет все левые строки в правильные строки. Попробуйте свой запрос без sum/group, чтобы просмотреть необработанные данные, и вы поймете, что происходит: 'select a.pur_item, a.pur_qty, b.sold_qty from purchase_item_qty_amount left join sale_item_qty_amount b на a.pur_item = b.sale_item, где .pur_item IN (12792,133263); ' – dotcomly