#sql #sql-server #sql-server-2012
Вопрос:
У меня есть два столбца Статус и Подтвержденный статус, которые я хочу преобразовать в столбцы для каждого из их уникальных значений для подсчетов. Как именно я могу это сделать в SQL Server?
Ввод
Year Status Verified_Status --------------------------------- 2021 Accepted Verified 2021 Accepted Verified 2021 Rejected Unverified 2021 Accepted Unverified 2021 Accepted Unverified 2020 Rejected Unverified 2020 Accepted Unverified 2020 Accepted Unverified
Ожидаемый результат
Year Accepted Rejected Verified Unverified ------------------------------------------- 2021 4 1 2 3 2020 2 1 0 3
Комментарии:
1. Проведите исследование «условных агрегатов».
Ответ №1:
Как намекнул Ларну… простая условная агрегация должна сделать свое дело
Select Year ,Accepted = sum( case when [Status]='Accepted' then 1 else 0 end ) ,Rejected = sum( case when [Status]='Rejected' then 1 else 0 end ) ,Verified = sum( case when [Verified_Status]='Verified' then 1 else 0 end ) ,Unverified = sum( case when [Verified_Status]='Unverified' then 1 else 0 end ) From YourTable Group By Year Order By Year Desc -- lt;lt; Optional
Ответ №2:
Select Count(Case When Status = 'Accepted' then 1 end) Accepted, Count(Case When Status = 'Rejected' then 1 end) Rejected, Count(Case When Status = 'Verified' then 1 end) Verified, Count(Case When Status = 'Unverified' then 1 end) Unverified from T group by year
Комментарии:
1. Пропущенный год, столбец проверенный_статус и группировка по