Сгруппировать в SQL Server, а затем объединить строки - PullRequest
0 голосов
/ 02 февраля 2019

Я использую приведенный ниже запрос для подсчета некоторых данных

select Count(BrowserName) as Count,BrowserName from UserSession
group by BrowserName

Результат, который я получаю, как показано ниже

Count BrowserName
3      IE
4      InternetExplorer
5      Chrome
6      Safari

Мне просто интересно, как я могу сгруппировать IE и InternetExplorerвместе, так что я получаю результаты в следующем формате

Count BrowserName
7      IE
5      Chrome
6      Safari

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Вы также можете использовать REPLACE().

select 
    Count = Count(*)
    ,BrowserName = REPLACE(BrowserName, 'InternetExplorer', 'IE')
from UserSession
group by REPLACE(BrowserName, 'InternetExplorer', 'IE')
0 голосов
/ 02 февраля 2019

Вы можете использовать case:

select (case when BrowserName in ('IE', 'InternetExplorer') then 'IE'
             else BrowserName
        end) as BrowswerName,
       Count(*) as Count
from UserSession
group by (case when BrowserName in ('IE', 'InternetExplorer') then 'IE'
               else BrowserName
          end);

Если у вас много совпадений, тогда использование JOIN может быть проще:

select coalesce(v.new_browsername, us.browsername) as browsername,
       count(*)
from UserSession us left join
     (values ('InternetExplorer', 'IE')
     ) v(browsername, new_browsername)
     on us.browsername = v.browsername
group by coalesce(v.new_browsername, us.browsername);

Вы можете добавить подходящие парыв списке values() для дальнейших замен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...