假設我在 Oracle 中有兩個表。其中一個看起來像這樣:
| 姓名 | 考試 | 年級 |
|---|---|---|
| 標記 | 數學 | 80 |
| 標記 | 英語 | 67 |
| 安德魯 | 數學 | 90 |
| 史蒂夫 | 英語 | 59 |
我的另一張表如下所示:
| 標記 | 安德魯 | 史蒂夫 |
|---|---|---|
| 空值 | 空值 | 空值 |
這是我的預期結果:
| 標記 | 安德魯 | 史蒂夫 |
|---|---|---|
| 數學 80 | 數學 90 | 英語-59 |
| 英語-67 | 空值 | 空值 |
如何將第二個表與第一個表合并,使其看起來像上面的結果?我的主要問題是沒有公共列,我必須將第一個表的值設定為第二個表的列名。我真的被這個困住了......
uj5u.com熱心網友回復:
您可以將PIVOT與ROW_NUMBER()分析函式一起使用,以便按每個人的每次考試對集合進行分組,例如
SELECT "Mark", "Andrew", "Steve"
FROM (SELECT Name,
Exam || '-' || Grade AS Exam,
ROW_NUMBER() OVER(PARTITION BY Name ORDER BY Exam DESC) AS rn
FROM t1)
PIVOT (
MAX(Exam) FOR Name IN ('Mark' AS "Mark",'Andrew' AS "Andrew",'Steve' AS "Steve")
)
不需要第二張桌子的地方
Demo
uj5u.com熱心網友回復:
使用 AS 引數還是 CROSS JOIN ?
您還可以閱讀:How join two tables using SQL without a common column
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429536.html
