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