在SQL Server中按分组,然后合并行
我使用下面的查询来计算一些数据在SQL Server中按分组,然后合并行,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我使用下面的查询来计算一些数据 select Count(BrowserName) as Count,BrowserName from UserSession group by BrowserName 我得到的结果如下 Count BrowserName 3 IE 4 InternetExplorer 5 Chrome 6 Safari 我只是想知道如何将IE和InternetExplorer组合在一起,以便得到以下格式的结果 Count Browse
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
谢谢您可以使用
案例
:
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()
列表中添加匹配对以进行进一步替换。您可以使用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()
列表中添加匹配对以进行进一步替换。您也可以使用REPLACE()
您也可以使用
REPLACE()
哈哈,我只是在发帖后想现在戈登会来回答:)哈哈,我只是在发帖后想现在戈登会来回答:)