繁体   English   中英

如何在单个表中合并Oracle SQL中的多个行值

[英]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;

如果要更新表。 然后在updatemerge查询中使用它来更新每个记录,然后删除重复的行。

干杯!!

您描述的是一个聚合查询,每个学生和一个学期有一行。

您不需要单独的 我的建议是简单查询或视图。

您的数据结构将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM