[英]How to combine multiple row values in Oracle SQL in a single table
我在每学期将多个行值组合到单个列时遇到了麻烦。
该表(GENERALEDPATHWAY)具有以下列:
*学生卡
*学期
*类
* CLASS_COMBINATION(当前所有值均为null)
*年
* CLASS_GRADE
*入口点
*学位
* CLASS_DISTRIBUTION
*学位
* GRADUATED_IN
我目前仅担心STUDENTID,SEMESTER,CLASS和Class_Combination。 每个学生都有一个唯一的ID,每个学期可能会有不同的班级组合。 我不想在每个学期为每个班级开一个单独的行,而是将班级值放到CLASS_COMBINATION列中。 例:我只希望该学期有1行,而不是在一个学期内为5个班级安排5行,而在CLASS_COMBINATION列中将所有班级按字母顺序列出。
我遇到的困难是所有信息都在一个表中,并且需要在Oracle SQL Developer中工作。
试试这个查询:
Select studentid, semester, class,
Listagg(class) within group (order by class) as CLASS_COMBINATION
From GENERALEDPATHWAY
Group by studentid, semester, class;
如果要更新表。 然后在update
或merge
查询中使用它来更新每个记录,然后删除重复的行。
干杯!!
您描述的是一个聚合查询,每个学生和一个学期有一行。
您不需要单独的表 。 我的建议是简单查询或视图。
您的数据结构将STUDENTID
描述为主键。 但是,您为STUDENTID
指定了多行,所以出了点问题–您的解释或数据模型。 根据您的描述,您想要:
select STUDENTID, semester,
listagg(class ', ') within group (order by class) as classes
from GENERALEDPATHWAY
group by STUDENTID, semester;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.