我有以下格式的表格,
表格1
| 銀行 | 類別 | 月_年 | 貸款型別 | 杰出的 |
|---|---|---|---|---|
| SI | R1 | 1月21日 | 家 | 10 |
| SI | R1 | 1月21日 | 土地 | 50 |
| SI | R2 | 2 月 21 日 | 家 | 30 |
| SI | R2 | MAR-21 | 車 | 40 |
表 2
| 銀行 | 貸款型別 |
|---|---|
| SI | 家 |
| SI | 土地 |
| SI | 車 |
| SI | 寶石 |
| SI | 教育 |
我想使用連接/查詢將表 A 和 B 轉換為以下格式。表 2 中的資料(所有行)應該根據 Category 和 Month_Year 添加。
| 銀行 | 類別 | 月_年 | 貸款型別 | 杰出的 |
|---|---|---|---|---|
| SI | R1 | 1月21日 | 家 | 10 |
| SI | R1 | 1月21日 | 土地 | 50 |
| SI | R1 | 1月21日 | 車 | 0 |
| SI | R1 | 1月21日 | 寶石 | 0 |
| SI | R1 | 1月21日 | 教育 | 0 |
| SI | R2 | 2 月 21 日 | 家 | 30 |
| SI | R2 | 2 月 21 日 | 土地 | 0 |
| SI | R2 | 2 月 21 日 | 車 | 0 |
| SI | R2 | 2 月 21 日 | 寶石 | 0 |
| SI | R2 | 2 月 21 日 | 教育 | 0 |
| SI | R2 | MAR-21 | 家 | 0 |
| SI | R2 | MAR-21 | 土地 | 0 |
| SI | R2 | MAR-21 | 車 | 40 |
| SI | R2 | MAR-21 | 寶石 | 0 |
| SI | R2 | MAR-21 | 教育 | 0 |
uj5u.com熱心網友回復:
主要是一個CROSS JOIN表之間需要后Category和Month_Year列被選擇的清楚,并且Outstanding列在主查詢作為零為不匹配的值添加,否則回傳它的值,如
SELECT t2.Bank, t2.Category, t2.Month_Year, t2.Loan_Type,
NVL(t1.Outstanding,0) AS Outstanding
FROM (SELECT *
FROM (SELECT DISTINCT Category, Month_Year FROM table1)
CROSS JOIN table2) t2
LEFT JOIN table1 t1
ON t2.Category = t1.Category
AND t2.Month_Year = t1.Month_Year
AND t2.Loan_Type = t1.Loan_Type
ORDER BY t2.Category, t2.Month_Year, t1.Outstanding NULLS LAST
Demo
uj5u.com熱心網友回復:
創建所需的所有專案的串列并左連接表 1。例如
select items.Bank, items.Category, items.Month_Year, items.Loan_Type, coalesce(t1.Outstanding, 0) Outstanding
from (
select t2.Bank, t2.Loan_Type, my.Month_Year, cat.Category
from (select distinct Month_Year
from Table1) my
cross join (select distinct Category
from Table1) cat
cross join Table2 t2
) items
left join Table1 t1 on items.Bank = t1.Bank and items.Loan_Type = t1.Loan_Type and items.Month_Year = t1.Month_Year and items.Category = t1.Category;
如果存在表Categories替換它而不是查詢中的派生類別。您可能還希望從引數生成一組 Month_Year 或使用日歷表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/327520.html
上一篇:Oracle附加到clob
