AKotenko
@AKotenko
None

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

Есть таблица вида
_________________________________
| id | error_number | error_desc |


Код ниже выполняет группировку но номеру ошибки
SELECT TOP (100)   
[error_number] ,
COUNT([error_number])as total      
FROM Db.tab_error
group by error_number

Как добавить в результат еще поле error_desc?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Скобки у TOP намекают на MS SQL.
SELECT TOP (100) [error_number] ,
                 COUNT( * ) AS [Total],
                 STRING_AGG( [error_desc], '; ' ) AS [Desc]
  FROM Db.tab_error
  GROUP BY [error_number]
  ORDER BY 2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
SELECT TOP (100)   
[error_number] ,
[error_desc],
COUNT([error_number])as total      
FROM Db.tab_error
group by error_number, error_desc

Добавить и в select, и в group by.
Группировка не распадется, если у всех одинаковых error_number строго одно и тоже содержание error_desc.
Если error_desc не обладает таким свойством, то придется использовать оконную функцию:
SELECT TOP (100)   
[error_number] ,
[error_desc],
COUNT(*) over (partition by [error_number]) as total      
FROM Db.tab_error
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы