Как сделать SQL-запрос, который объединит строки

У меня есть таблица базы данных MSSQL с такими данными, как:

----------------------------------------
| Id | PartNo | Price  | Qty| ExtPrice |
----------------------------------------
| 1  | Thing1  | 1.50  |  2 |  3.00    |
----------------------------------------
| 2  | Thing 2 | 2.50  |  3 | 7.50     |
----------------------------------------

В последних трех полях я могу выполнить SUM () с моей GROUP BY, но мне нужно, чтобы это было объединено с полем PartNo следующим образом:

--------------------------------------------
| PartNo          | Price | Qty | ExtPrice |
--------------------------------------------
| Thing1, Thing2  | 4.00  |  5  |  10.50   |
--------------------------------------------
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать агрегатную функцию STRING_AGG (Transact-SQL).

SELECT 
    STRING_AGG (PartNo, ', ') WITHIN GROUP (ORDER BY PartNo ASC) AS PartNo,
    SUM(Price) As Price, 
    SUM(Qty) As Qty, 
    SUM(ExtPrice) As ExtPrice
FROM MyTable;

См .: http://sqlfiddle.com/#!18/77ff1/2/0

Кстати: больше не осталось столбцов для группировки, поэтому вы можете просто отбросить GROUP BY.

Ответ принят как подходящий

Если вы используете любую версию старше SQL Server 2017, STRING_AGG() не будет доступен для использования, для более старой версии вы можете использовать метод FOR XML PATH('') для объединения строк, что-то вроде этого ...

SELECT STUFF((  SELECT ',' + PartNo
                FROM TableName 
                FOR XML PATH(''), TYPE)
                .value('.', 'NVARCHAR(MAX)') ,1 ,1,'') AS PartNo
      , SUM(Price)      AS Price
      , SUM(Qty)        AS Qty
      , SUM(ExtPrice)   AS ExtPrice
FROM TableName

Другие вопросы по теме

Оператор выбора, блокирующий другой оператор выбора
Как выбрать и объединить группу таблиц в схеме в SQL Server 2008 R2 с помощью переменной для определения базы данных
Почему select count (*) дает другой результат, чем select?
Как я могу получить TZoffset в T-SQL?
Нечеткое группирование SSIS Всегда возвращать один и тот же результат с разным порогом схожести
SQL: реплицированные транзакции ждут следующего резервного копирования журнала или пока партнер по зеркалированию не наверстает упущенное
Проблема с идентификатором, состоящим из нескольких частей, и перемещение данных двумя способами в одной таблице / представлении
Нужна полезная рука с sql-запросом
Доступ к конкретной записи базы данных в соответствии с выбранным представлением сетки данных после фильтра
TSQL-Суммирует все значения столбца 1 на одно значение столбца 2 и отображает ТОЛЬКО одно значение столбца 2 и суммарное значение столбца 1