Как я могу сгруппировать данные по двум полям в SQL?

Как изменить код ниже, чтобы добавить поле error_desc в результат: 

SELECT TOP (100) 
[error_number],
COUNT([error_number]) AS total,
MAX([error_desc]) AS error_desc
FROM Db.tab_error 
GROUP BY [error_number]
  • 13 февраля 2024 г. 8:58
Ответы на вопрос 2
Чтобы сгруппировать данные по двум полям, вы должны добавить оба поля в секцию GROUP BY запроса. 
В данном случае вы хотите сгруппировать данные по полям [error_number] и [error_desc], следовательно, ваш запрос будет выглядеть так:

SELECT TOP (100) 
[error_number],
[error_desc],
COUNT([error_number]) AS total
FROM Db.tab_error 
GROUP BY [error_number], [error_desc]

Чтобы добавить поле error_desc в результат, вы уже делаете это с помощью функции MAX([error_desc]) AS error_desc. Однако, для некоторых баз данных может потребоваться использование функций агрегирования (например, MAX или MIN), чтобы корректно отображать поле для каждой группы. Это может произойти, если у вас есть несколько значений [error_desc] для каждого [error_number].
Добавить и в select, и в group by. 
Группировка не распадется, если у всех одинаковых error_number строго одно и тоже содержание error_desc.
Если error_desc не обладает таким свойством, то придется использовать оконную функцию:
Похожие вопросы