I am trying to get a record from one table and on the basis of that record sum of quantity in another table which has multiple record and then join thrid table to get the price and multiply price with quantity.
order
id | status | date |
---|---|---|
1 | 1 | 25-12-2022 |
orderitem
id | pid | qty | Uom(unit of measure) |
---|---|---|---|
1 | 100 | 5 | KG |
1 | 101 | 10 | KG |
1 | 102 | 15 | KG |
productstable
pid | price | Uom(unit of measure) |
---|---|---|
100 | 1 | KG |
101 | 2 | KG |
102 | 3 | KG |
OUTPUT:
date | quantity | Price |
---|---|---|
25-12-2022 | 30 | 70 |
1-Get record from order
2-Sum quantity of that id
3-get price of product id and multiply it with sum quantity in step 2
As I understand the question you need the sum per order id ( 2-Sum quantity of that id ) . If that is the case then you'll need order id for grouping the data:
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 your sample data (added a few more rows):
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 esult:
ORDER_ID | ORDER_DATE | QTY | AMOUNT |
---|---|---|---|
1 | 25-DEC-22 | 30 | 70 |
2 | 25-DEC-22 | 30 | 45 |
3 | 25-DEC-22 | 10 | 30 |
Sample data:
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 )
Query begins here:
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>
(I renamed invalid table ( order
) and column ( date
) names).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.