Возьмет следующую таблицу:Возврат всех различных значений столбца B в одной строке для каждого отдельного значения в колонке А
CREATE TABLE boxes (
box integer,
color character varying,
size integer,
...
);
где оба box
и color
можно предположить, не уникальные значения из небольшого набора.
Запрос эту таблицу:
SELECT color, box FROM boxes;
результат будет что-то вроде:
+-------+-----+
| color | box |
+-------+-----+
| blue | 2 |
| blue | 3 |
| blue | 4 |
| green | 1 |
| green | 3 |
| red | 1 |
| red | 2 |
| red | 2 |
+-------+-----+
Можно ли запросить эту таблицу таким образом, что результат имеет две колонки, одна с массив (или строку или список) со всеми значениями box
для каждого отдельного color
?
Результат должен быть чем-то вроде этого:
+-------+-----------+
| color | box_types |
+-------+-----------+
| blue | {2,3,4} |
| green | {1,3} |
| red | {1,2} |
+-------+-----------+
, где color
столбец должен содержать уникальные значения, и каждая строка должна содержать только отдельные box
числа в агрегированном колонке.
Учитывая неагностический характер этого вопроса, я хотел бы собрать все лучшие решения для основной СУБД. При ответе укажите, для каких СУБД каждый запрос работает.
, что это на самом деле не SQL способ делать вещи. Однако некоторые продукты dbms имеют функциональность, например GROUP_CONCAT и STUFF. – jarlh
Я полагаю, кто-то должен объединить все ответы в один ... – xpy
Да, это намерение. –