2015-09-30 3 views
1

У меня есть запрос, который в какой-то момент имеет два скопления:порядок два string_agg одновременно

string_agg(requirements, '@') as req, string_agg(name, ',') as name 

Позже код, я разделить символы, которые я использовал в агрегации и пронестись два полученных массивов вместе. Однако этот код не будет работать, потому что мне нужны записи, упорядоченные по имени. Если бы я это сделать:

string_agg(requirements, '@') as req, string_agg(name, ',' order by name) as name 

, то он на самом деле теряют correspondency с требованиями, как только я разделить строки и установить его снова.

Как я могу заказать обе скопления в одно и то же время? Есть лучший способ сделать это?

ответ

2

Просто укажите тот же order by положение для них обоих:

STRING_AGG(requirements, '@' ORDER BY name) AS req, 
STRING_AGG(name, ',' ORDER BY name) AS name 
+0

дух! Спасибо! – fotanus

+0

Хотя очень вероятно, что два заказа будут одинаковыми, нет гарантии в случае связей «имя». Но опять же это не важно в этом вопросе, так как в любом случае одно из аггретов - это имя. –

Смежные вопросы