Member 10256268 Ответов: 1

Как добавить order by в строку agg, когда два столбца объединены.


Выберите string_agg( четкие || '-' || б ',' приказ,б) из табл.;

Вышеприведенный sql дает ошибку

ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list


Как решить эту проблему.

Что я уже пробовал:

Я пробовал использовать вышеприведенный sql, который упоминался в приведенном выше окне проблемы.

1 Ответов

Рейтинг:
1

jgakenhe

С такого рода ошибками я обычно использую подзапрос для выполнения своей грязной работы. Поиграв с этим в течение нескольких минут, SQL Fiddle[^][^], Я придумал SQL-скрипт ниже.

CREATE TABLE item
(
itemid integer,
item character varying(50)
);

INSERT INTO item(itemid, item)VALUES (1, 'pizza');
INSERT INTO item(itemid, item)VALUES (2, 'cake');
INSERT INTO item(itemid, item)VALUES (3, 'sandwich');


select string_agg(itemid || '-' || item,' | ') FROM ((SELECT DISTINCT item, itemid FROM item ORDER BY itemid)) t;