[英]Oracle 11g get data from 3 tables
我试图从一个表中获取一条记录,并基于另一个表中的记录数量总和,该表中有多个记录,然后加入第三个表以获取价格并将价格乘以数量。
命令
ID | 状态 | 日期 |
---|---|---|
1个 | 1个 | 25-12-2022 |
订单项目
ID | 进程号 | 数量 | Uom(计量单位) |
---|---|---|---|
1个 | 100 | 5个 | 公斤 |
1个 | 101 | 10 | 公斤 |
1个 | 102 | 15 | 公斤 |
产品表
进程号 | 价格 | Uom(计量单位) |
---|---|---|
100 | 1个 | 公斤 |
101 | 2个 | 公斤 |
102 | 3个 | 公斤 |
OUTPUT:
日期 | 数量 | 价格 |
---|---|---|
25-12-2022 | 30 | 70 |
1-获取订单记录
2-那个id的总和数量
3-获取产品 ID 的价格并将其乘以步骤 2 中的总数量
据我了解,您需要每个订单 ID的总和(该 ID 的 2-Sum 数量) 。 如果是这种情况,那么您将需要订单 ID 来对数据进行分组:
SELECT o.ID "ORDER_ID", o.ORDER_DATE,
Sum(oi.QTY) "QTY", Sum(oi.QTY * p.PRICE) "AMOUNT"
FROM order_tbl o
INNER JOIN order_items oi ON(oi.ID = o.ID)
INNER JOIN products p ON(p.PID = oi.PID)
GROUP BY o.ID, o.ORDER_DATE
ORDER BY o.ID
使用您的示例数据(添加了几行):
with
order_tbl (ID, STATUS, ORDER_DATE) AS
(
Select 1, 1, To_Date('2022-12-25', 'yyyy-mm-dd') From Dual Union All
Select 2, 1, To_Date('2022-12-25', 'yyyy-mm-dd') From Dual Union All
Select 3, 1, To_Date('2022-12-25', 'yyyy-mm-dd') From Dual
),
order_items (ID, PID, QTY, UOM) AS
(
Select 1, 100, 5, 'KG' From Dual Union All
Select 1, 101, 10, 'KG' From Dual Union All
Select 1, 102, 15, 'KG' From Dual Union All
-- added order 2
Select 2, 101, 15, 'KG' From Dual Union All
Select 2, 100, 15, 'KG' From Dual Union All
-- added order 3
Select 3, 102, 10, 'KG' From Dual
),
products (PID, PRICE, UOM) as
(
Select 100, 1, 'KG' From Dual Union All
Select 101, 2, 'KG' From Dual Union All
Select 102, 3, 'KG' From Dual
)
R 结果:
订单号 | 订购日期 | 数量 | 数量 |
---|---|---|---|
1个 | 22 年 12 月 25 日 | 30 | 70 |
2个 | 22 年 12 月 25 日 | 30 | 45 |
3个 | 22 年 12 月 25 日 | 10 | 30 |
样本数据:
SQL> with
2 t_order (id, status, datum) as
3 (select 1, 1, date '2022-12-22' from dual),
4 orderitem (id, pid, qty) as
5 (select 1, 100, 5 from dual union all
6 select 1, 101, 10 from dual union all
7 select 1, 102, 15 from dual
8 ),
9 productstable (pid, price) as
10 (select 100, 1 from dual union all
11 select 101, 2 from dual union all
12 select 102, 3 from dual
13 )
查询从这里开始:
14 select o.datum,
15 sum(i.qty) quantity,
16 sum(i.qty * p.price) price
17 from t_order o join orderitem i on i.id = o.id
18 join productstable p on p.pid = i.pid
19 group by o.datum;
DATUM QUANTITY PRICE
---------- ---------- ----------
22-12-2022 30 70
SQL>
(我重命名了无效的表( order
)和列( date
)名称)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.