小编典典

如何在Oracle中合并一组记录?

sql

考虑下表,

Name    | Subject_1    | Marks_1    | Subject_2    | Marks_2    |
Tom     | Maths        | 90         |              |            |
Tom     |              |            | Science      | 50         | 
Jon     |              |            | Science      | 70         |
Jon     | Maths        | 60         |              |            |

我如何获得以下结果

Name    | Subject_1    | Marks_1    | Subject_2    | Marks_2    |
Tom     | Maths        | 90         | Science      | 50         |
Jon     | Maths        | 60         | Science      | 70         |

尝试过的形式GROUP BY但未获得正确的结果,数学将始终放在Subject_1之下,而Science总是在SUbject_2之下。


阅读 146

收藏
2021-04-07

共1个答案

小编典典

使用:

  • 最大限度
  • 通过…分组
SQL> SELECT NAME,
  2    MAX(subject_1) subject_1,
  3    MAX(marks_1) marks_1,
  4    MAX(subject_2) subject_2,
  5    MAX(marks_2) marks_2
  6  FROM t
  7  GROUP BY name;

NAME SUBJECT_1    MARKS_1 SUBJECT_2    MARKS_2
---- --------- ---------- --------- ----------
Jon  Maths             60 Science           70
Tom  Maths             90 Science           50

SQL> 

附带说明一下,您需要考虑您的 桌子设计 。您只能有3列,name, subject, marks

如果您想在同一张表中有 单独的列 ,那么对于每个学生,您都应该将它们作为 一行 。并且,当您为学生准备了新的科目时,请为该学生 更新
行,而不是添加新行。

2021-04-07