我的数据格式如下。
ID GRP VALUE
1 P_1 AA
1 P_2 BB
1 X_1 CC
1 X_2 DD
1 M_1 EE
1 M_2 FF
1 N_1 GG
1 N_2 HH
1 K_1 II
1 K_2 JJ
我需要以以下格式输出
ID GRP PAIRS
1 P_1,P_2 AA,BB
1 X_1,X_2 CC,DD
1 M_1,M_2 EE,FF
1 N_1,N_2 GG,HH
1 K_1,K_2 II,JJ
在oracle中为此建议一个sql
答案 0 :(得分:3)
您可以使用LISTAGG:
public enum UserEnum {
PATIENT("patientE"),
DOCTOR("doctorE"),
ADMIN("adminE");
private String userEnum;
UserEnum(String userEnum) {
this.userEnum = userEnum;
}
@Override
public String toString() {
return this.userEnum;
}
public String getString(Locale locale) {
ResourceBundle resourceBundle =ResourceBundle.getBundle("i18n.Enums", locale);
return resourceBundle.getString(userEnum);}
}
我假设您要在输出的第一列中为每个组的最大ID(在示例中写为全1)。
答案 1 :(得分:0)
如果只有两个值,则可以使用MIN()
和MAX()
:
select id,
min(grp) || ',' || max(grp) as grp,
min(value) || ',' || max(value) as pairs
from t
group by id, substr(grp, 1, 1);