需要将行数据连接到Oracle中的列

时间:2018-12-11 09:18:42

标签: sql oracle

我的数据格式如下。

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

2 个答案:

答案 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);