У меня есть следующая таблица в PostgreSQL 11.
col1 col2 col3 col4
3876 Dexamethasone Dexamethasone A01AC
3876 Dexamethasone Dexamethasone C05AA
3876 Dexamethasone Dexamethasone D07AB
3924 Dexamethasone Dexamethasone A01AD
3924 Dexamethasone Dexamethasone C05AB
3925 Dexamethasone sulphate Dexamethasone A01AC
3925 Dexamethasone sulphate Dexamethasone C05AA
Я хотел бы получить строки с различными значениями col1, col2, col3 и агрегировать col4 и взять первое значение col1, если col1 , col2, col3 идентичны.
Желаемый результат:
col1 col2 col3 col4
3876 Dexamethasone Dexamethasone A01AC | C05AA | D07AB | A01AD | C05AB
3925 Dexamethasone sulphate Dexamethasone A01AC | C05AA
Я пробовал выполнить следующий запрос.
select distinct on (col1, col2, col3)
col1,
col2,
col3,
string_agg(col4, ',')
from table
where col2 ilike '%dexamethasone%' and col1 = 'Dexamethasone'
group by col1, col2, col3;
Как я могу ограничить вывод, чтобы получить его значение col1 на col2, col3 .. например. выбор значения col1: 3876 и исключение 3924.