无法使用相同的 item_hsn 对字段进行分组并使用 group by sql 语句对其数量求和
unable to group the field with same item_hsn and sum the quantity of it using group by sql statements
Select purchase_items.item_hsn, sales_items.item_hsn, purchase_items.quantity as qty1,
sales_items.quantity as 'qty2',
purchase_items.quantity-sales_items.quantity as 'Difference'
from purchase_items
LEFT JOIN sales_items ON purchase_items.item_hsn = sales_items.item_hsn;
这是我的查询,我有两个表 purchase_items 和 sales_items 我想生成关于 item_hsn 及其数量
的商品库存
stock=purchase-sales;
无法这样做,我是这里的新手,请帮我解决这个问题:
我添加了输出,它与两个数量不同的相同 item_hsn 混淆了。
您似乎想要聚合:
select
i.item_hsn,
sum(i.quantity) as qty1,
coalesce(sum(s.quantity), 0) as qty2,
sum(i.quantity) - coalesce(sum(s.quantity), 0) - s.quantity as diff
from purchase_items i
left join sales_items s on p.item_hsn = s.item_hsn
group by i.item_hsn
备注:
coalesce()
确保我们为没有销售的商品获得正确的结果
标识符不要使用单引号;它们应该只用于文字字符串。相反,使用反引号,或者更好的是使用不带引号的标识符。
我怀疑您的基础表中每个项目 hsn 有多行。这表明了一种不同的聚合方法。我会使用 union all
来重组数据然后聚合:
select item_hsn, sum(purchases) as purchases, sum(sales) as sales,
sum(purchases) - sum(sales) as difference
from ((select pi.ite_hsn, pi.quantity as purchases, 0 as sales
from purchase_items pi
) union all
(select si.ite_hsn, 0 as purchases, si.quantity as sales
from sales_items si
)
) ps
group by item_hsn
我不确定项目名称的来源。您编写的查询未返回它。但是您应该能够调整此查询以包含它。
"Select purchase_items.item_hsn, purchase_items.item_name, sales_items.item_hsn, (SELECT sum(quantity) FROM purchase_items
WHERE purchase_items.item_hsn=sales_items.item_hsn) as 'qty2', (SELECT sum(quantity) FROM sales_items WHERE purchase_items.item_hsn=sales_items.item_hsn)
as 'qty1' ,(SELECT sum(quantity) FROM purchase_items WHERE purchase_items.item_hsn=sales_items.item_hsn) - (SELECT sum(quantity) FROM sales_items WHERE
purchase_items.item_hsn=sales_items.item_hsn) as 'Difference' from purchase_items,sales_items WHERE purchase_items.item_hsn = sales_items.item_hsn
GROUP BY purchase_items.item_hsn, sales_items.item_hsn"
**here is the query for stock**
Select purchase_items.item_hsn, sales_items.item_hsn, purchase_items.quantity as qty1,
sales_items.quantity as 'qty2',
purchase_items.quantity-sales_items.quantity as 'Difference'
from purchase_items
LEFT JOIN sales_items ON purchase_items.item_hsn = sales_items.item_hsn;
这是我的查询,我有两个表 purchase_items 和 sales_items 我想生成关于 item_hsn 及其数量
的商品库存stock=purchase-sales;
无法这样做,我是这里的新手,请帮我解决这个问题:
我添加了输出,它与两个数量不同的相同 item_hsn 混淆了。
您似乎想要聚合:
select
i.item_hsn,
sum(i.quantity) as qty1,
coalesce(sum(s.quantity), 0) as qty2,
sum(i.quantity) - coalesce(sum(s.quantity), 0) - s.quantity as diff
from purchase_items i
left join sales_items s on p.item_hsn = s.item_hsn
group by i.item_hsn
备注:
coalesce()
确保我们为没有销售的商品获得正确的结果标识符不要使用单引号;它们应该只用于文字字符串。相反,使用反引号,或者更好的是使用不带引号的标识符。
我怀疑您的基础表中每个项目 hsn 有多行。这表明了一种不同的聚合方法。我会使用 union all
来重组数据然后聚合:
select item_hsn, sum(purchases) as purchases, sum(sales) as sales,
sum(purchases) - sum(sales) as difference
from ((select pi.ite_hsn, pi.quantity as purchases, 0 as sales
from purchase_items pi
) union all
(select si.ite_hsn, 0 as purchases, si.quantity as sales
from sales_items si
)
) ps
group by item_hsn
我不确定项目名称的来源。您编写的查询未返回它。但是您应该能够调整此查询以包含它。
"Select purchase_items.item_hsn, purchase_items.item_name, sales_items.item_hsn, (SELECT sum(quantity) FROM purchase_items
WHERE purchase_items.item_hsn=sales_items.item_hsn) as 'qty2', (SELECT sum(quantity) FROM sales_items WHERE purchase_items.item_hsn=sales_items.item_hsn)
as 'qty1' ,(SELECT sum(quantity) FROM purchase_items WHERE purchase_items.item_hsn=sales_items.item_hsn) - (SELECT sum(quantity) FROM sales_items WHERE
purchase_items.item_hsn=sales_items.item_hsn) as 'Difference' from purchase_items,sales_items WHERE purchase_items.item_hsn = sales_items.item_hsn
GROUP BY purchase_items.item_hsn, sales_items.item_hsn"
**here is the query for stock**