Ros*_*han 5 mysql sql database
我有4张桌子。
CREATE TABLE Branch(
ID INT,
Name VARCHAR(50)
);
INSERT INTO Branch VALUES
(1,'A'), (2,'B');
CREATE TABLE Product(
ID INT,
Name VARCHAR(50)
);
INSERT INTO Product VALUES
(1,'X'), (2,'Y');
CREATE TABLE StockIn(
ID INT,
ProductId INT,
Quantity INT,
BranchId INT
);
INSERT INTO StockIn VALUES
(1,1,10,1),
(2,1,20,1),
(3,1,50,2),
(4,1,10,2);
CREATE TABLE StockOut(
ID INT,
ProductId INT,
Quantity INT,
BranchId INT
);
INSERT INTO StockOut VALUES
(1,1,5,1),
(2,1,21,1),
(3,1,45,2),
(4,1,5,2);
Run Code Online (Sandbox Code Playgroud)
现在我想根据这些计算库存(StockIn-StockOut)。
通过使用下面的查询,我通过对分支进行分组,从库存表中获取了库存和库存。
库存
select BranchId, ifnull(sum(Quantity),0) Quantity from stockin where productid=1 group by BranchId;
Run Code Online (Sandbox Code Playgroud)
脱销
select BranchId, ifnull(sum(Quantity),0) Quantity from stockout where productid=1 group by BranchId;
Run Code Online (Sandbox Code Playgroud)
我想展示这样的结果
尝试以下查询:
SELECT derived_t.BranchId,
SUM(derived_t.factor * derived_t.quantity) AS Quantity
FROM
(
select BranchId,
ifnull(sum(Quantity),0) as quantity,
1 as factor
from stockin
where productid=1
group by BranchId
UNION ALL
select BranchId,
ifnull(sum(Quantity),0) Quantity,
-1 as factor
from stockout
where productid=1
group by BranchId
) AS derived_t
GROUP BY derived_t.BranchId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1959 次 |
| 最近记录: |