#sql #string #window-functions
#sql #строка #окно-функции
Вопрос:
ВВОД:
ID VALUES
1 A
1 B
2 A
3 B
ВЫВОД:
ID VALUES
1 AB
1 AB
2 A
3 B
Если ID имеет оба значения A и B, он должен возвращать AB.
Комментарии:
1. Пометьте свой вопрос базой данных, которую вы используете. И почему вы хотите, чтобы в результирующем наборе были повторяющиеся строки?
2. Пожалуйста, укажите в своем вопросе базу данных, которую вы используете: mysql, oracle, postgresql …?
Ответ №1:
Вы описываете агрегирование строк как оконную функцию. В стандартном ANSI SQL синтаксис будет:
select id, listagg(values) within group(order by values) over(partition by id) values
from mytable
Однако не все базы данных поддерживают этот синтаксис. В MySQL вы бы использовали group_concat()
, в Postgres, это string_agg()
и так далее — но логика остается той же.