«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как объединить столбцы на основе GROUP BY в SQL?

Как объединить столбцы на основе GROUP BY в SQL?

Опубликовано 21 января 2025 г.
Просматривать:744

How to Concatenate Columns Based on GROUP BY in SQL?

Соединение столбца в инструкции GROUP BY в SQL

В SQL обычным способом объединения или соединения столбцов на основе инструкции GROUP BY является использование комбинации агрегатных функций и строковых операторов. Давайте рассмотрим, как этого добиться.

Рассмотрим следующий пример таблицы:

ИдентификаторПользовательДействияURL страницы
1iact1ab
2i act1cd
3выact2xy
4тыдействуй2st

Чтобы объединить значения PageURL для каждого пользователя и группы действий, разделенные запятыми, мы можем использовать следующий запрос:

SELECT [пользователь], действие, STUFF((SELECT ',' URL страницы FROM имя таблицы WHERE [user] = a. [user] AND Activity = a. Activity FOR XML PATH ('')) , 1, 1, '') КАК список URL ИЗ имени таблицы КАК ГРУППА ПО [пользователь], активность

Декомпозиция запроса:

  • ВЫБЕРИТЕ [Пользователь], Действия, Список URL-адресов: Выберите столбцы «Пользователь», «Действия» и «Список URL-адресов» для отображения.
  • STUFF: Объединяет значения PageURL в одну строку.
  • (SELECT ',' PageURL ...): подзапрос для извлечения значения PageURL каждой группы и объединения их запятой в качестве разделителя.
  • FOR XML PATH (''): Преобразует результаты подзапроса в строку XML.
  • STUFF(... , 1, 1, ''): удаляет запятую в начале строки XML, оставляя только объединенное значение.
  • GROUP BY [USER], ACTIVITY: Группирует результаты по «Пользователю» и «Действию», так что объединение выполняется для каждой уникальной комбинации.

Полученная таблица будет иметь желаемый макет:

ПользовательДействияСписок URL
Я акт1ab, cd
тыact2xy, st

Этот подход использует возможности агрегатных функций и строковых операций для эффективного объединения значений столбцов на основе операций GROUP BY, что делает его гибким решением для различных задач манипулирования данными.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3