Объедините результаты из отдельных столбцов, сгруппированных по заданному столбцу c - PullRequest
0 голосов
/ 15 апреля 2020

с такой таблицей в oracle db:

+-----+-----+-----+-----+
| VAL1| VAL2| VAL3|  ID |
+-----+-----+-----+-----+
|  A  |     |     |  1  |
-------------------------
|     |  B  |     |  1  |
-------------------------
|     |     |  C  |  1  |
-------------------------
|  X  |     |  Z  |  2  |
-------------------------
|     |  Y  |     |  2  |
-------------------------
|     |  Y  |  Z  |  2  |
-------------------------
|  E  |     |     |  3  |
-------------------------
|     |     |  F  |  3  |
-------------------------

Как выбрать из этой таблицы (в ORACLE), чтобы получить следующий вывод, где все эти строки сгруппированы по столбцу ID ?

    +-----+-----+-----+-----+
    | VAL1| VAL2| VAL3|  ID |
    +-----+-----+-----+-----+
    |  A  |  B  |  C  |  1  |
    -------------------------
    |  X  |  Y  |  Z  |  2  |
    -------------------------
    |  E  |     |  F  |  3  |
    -------------------------

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Вы можете использовать агрегацию:

select id, max(val1) as val1, max(val2) as val2, max(val3) as val3
from t
group by id;
0 голосов
/ 15 апреля 2020

Используйте GROUP BY в сочетании с функцией агрегирования, такой как MAX().

Например:

select
  max(val1) as val1,
  max(val2) as val2,
  max(val3) as val3,
  id
from t
group by id
...