что-то всю голову сломал, не могу придумать как реализовать нужное.
Есть вот такой набор данных:
f0 f1 f2 f3
aaaa | NULL | 1234 | a
aaaa | 3210 | NULL | b
aaaa | 3210 | 1234 | c
aaaa | 3210 | 2222 | a
аааа | 3333 | 2222 | b
аааа | 3333 | 2222 | c
каким запросом его превратить в
f0 f1 f2 f3
aaaa | 3210 | 1234 | a,b,c
aaaa | 3210 | 2222 | a
аааа | 3333 | 2222 | b,c
?
Делаю group by f0,f1,f2 b и получаю объединение только по последнему набору:
f0 f1 f2 f3
aaaa | NULL | 1234 | a
aaaa | 3210 | NULL | b
aaaa | 3210 | 1234 | c
aaaa | 3210 | 2222 | a
аааа | 3333 | 2222 | b,c
как быть?
Запросы бы показал хоть
Убери из запроса поле f3. Гугли STRING_AGG
ну вот как раз f3 я агрегирую string_agg.. но f1 или f2 нулл когда - как их кприклеить к набор f1-f2 не нулл (оба)
SELECT * FROM ( SELECT ,c."F" ,c."D" ,c."E" ,c."P" ,string_agg(distinct c."Ad",';'||chr(13)||chr(10))::VARCHAR as "Ad" from "dddd"."ccc" c where (c.fts @@ to_tsquery(zSer)) group by c."F",c."D",c."E",c."P" ) c0 Order by c0."D" asc;
Так ты хочешь типа проигнорить null?
да, например E =NULL и запихать значение Ad в наборЫ F+D+P
Ну так по твоим хотелкам почему NULL равен 1234?
ну вот такие записи в таблице :( F=aaa, D=bbb, E=3210, P=NULL, Ad=a F=aaa, D=bbb, E=NULL, P=1234, Ad=b F=aaa, D=bbb, E=3210, P=1234, Ad=c
Но я кажись понял, что это анрил.. и понял почему.. заказчику красиво, но машина-дура, ведь надо Ad для Нулл-полей запихивать во все другие наборы..
Да на аналитику это... First/Last/etc
Обсуждают сегодня