[英]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.