ошибка возникает при использовании внутри GROUP со string_agg в postgresql - PullRequest
0 голосов
/ 20 сентября 2019

Мой запрос в postgresql 10 вызывает ошибку, когда он используется в предложении GROUP

ОШИБКА: функция string_agg (символ меняется, неизвестно, целое число) не существует

У меня есть таблицы и отношения.at имеет уникальный идентификатор и описание, а atrelation хранит несколько транзакций с кодом связанных at и идентификатором строки транзакции.например,

строка продукта с идентификатором 6 имеет тег имени столбца, имеет значение service5% и contco4.5%

строка продукта с идентификатором 5 имеет значение тега service5%

Iнеобходимо показать 2 строки, т.е. строки 6 и 5.

строка 5 показывает значение тега столбца 'service5% и contco4.5%'

строка 6 показывает значение тега столбца 'service5%'

select  atrelation.id, 
        string_agg(at.description, ' and ' ) within GROUP (ORDER BY atrelation.id )  as tag1    
from  at, atrelation    
where atrelation.id = atrelation.atid   
group by atrelation.id    
order by atrelation.id desc;

выше запроса поднять после ошибки,

ERROR:  function string_agg(character varying, unknown, integer) does not exist
LINE 1: select atrelation.purchase_order_line_id as id, string_agg(a...
                                                        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********

ERROR: function string_agg(character varying, unknown, integer) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 49

1 Ответ

0 голосов
/ 20 сентября 2019

Вам нужно поместить ORDER BY в вызов функции и удалить часть WITHIN GROUP:

string_agg(at.description, ' and ' ORDER BY atrelation.id)  as tag1 
...