如果 sql 中没有公共列,如何合并表?

How to merge tables if they don't have a common column in sql?

假设我在 Oracle 中有两个 table。其中一个看起来像这样:

Name Exam Grade
Mark Math 80
Mark English 67
Andrew Math 90
Steve English 59

另一个table我看起来像这样:

Mark Andrew Steve
Null Null Null

这是我的预期结果:

Mark Andrew Steve
Math-80 Math-90 English-59
English-67 Null Null

如何将第二个 table 与第一个合并,使其看起来像上面的结果?我的主要问题是没有公共列,我必须将第一个 table 的值设置为第二个 table 的列名。我真的被这个困住了...

使用 AS 参数或 CROSS JOIN ?

您还可以阅读此内容:

您可以使用 PIVOTing 和 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")
       )

其中 不需要第二个 table

Demo