Если ID имеет оба значения A и B, он должен возвращать AB

#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() и так далее — но логика остается той же.