Sql 组byI末尾的ed列将其设置为标量值UDFYou可以使用公共表表达式执行case操作并设置需要汇总的数据。您还可以将映射放在单独的表中,使其易于维护。在像“%”+mt.Map+'%@MikeMiller这样的用户代理上使用类似于左外连接MappingTab

Sql 组byI末尾的ed列将其设置为标量值UDFYou可以使用公共表表达式执行case操作并设置需要汇总的数据。您还可以将映射放在单独的表中,使其易于维护。在像“%”+mt.Map+'%@MikeMiller这样的用户代理上使用类似于左外连接MappingTab,sql,sql-server,Sql,Sql Server,组byI末尾的ed列将其设置为标量值UDFYou可以使用公共表表达式执行case操作并设置需要汇总的数据。您还可以将映射放在单独的表中,使其易于维护。在像“%”+mt.Map+'%@MikeMiller这样的用户代理上使用类似于左外连接MappingTable mt的东西连接到映射表上我觉得CTE在我的情况下更有用,因为我的db结构有限。因为数据库每晚都会更新[恢复到最新的专业版本],我正在分析模块上运行此查询。使用额外的表执行CTE/UDF/left join如何 Windows-10


组byI末尾的ed列将其设置为标量值UDFYou可以使用公共表表达式执行case操作并设置需要汇总的数据。您还可以将映射放在单独的表中,使其易于维护。在像“%”+mt.Map+'%@MikeMiller这样的用户代理上使用类似于左外连接MappingTable mt的东西连接到映射表上我觉得CTE在我的情况下更有用,因为我的db结构有限。因为数据库每晚都会更新[恢复到最新的专业版本],我正在分析模块上运行此查询。使用额外的表执行CTE/UDF/left join如何
  Windows-10  yyy 
  Windows-8   xxx
  Windows-7   abc 
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; 

Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36   etc
Mozilla/4.0(compatible;MSIE7.0;WindowsNT10.0;WOW64;Trident/8.0;
Mozilla/5.0(WindowsNT6.3;Trident/7.0;Touch;MAARJS;rv:11.0)likeGecko  etc
    SELECT 
        COUNT(d.UserAgent) as countname,
        Replace(d.UserAgent, ' ', ' ') as name
    FROM 
        LOGINHISTORYTABLE as d  
    WHERE 
        d.CreatedDate > '2017-02-08' 
        AND d.CreatedDate < '2017-02-09' 
        AND (Replace(d.UserAgent, ' ', '') like '%WindowsNT10.0%'
        OR Replace(d.UserAgent, ' ', '') like '%WindowsNT6.3%')
    GROUP BY 
        d.UserAgent
    SELECT SUM(countname) as TotalCount , 'Windows 10' as OS
    FROM
    (
        SELECT COUNT(d.UserAgent) as countname,
            Replace(d.UserAgent, ' ', ' ') as name
        FROM LOGINHISTORYTABLE as d  
        WHERE d.CreatedDate>  '2017-02-08' AND d.CreatedDate < '2017-02-09' AND 
           (Replace(d.UserAgent, ' ', '') like '%WindowsNT10.0%'
           OR 
           Replace(d.UserAgent, ' ', '') like '%WindowsNT6.3%')
        GROUP BY d.UserAgent
    )a
 SELECT SUM(countname) as TotalCount , 
        name
    FROM
    (
        SELECT COUNT(d.UserAgent) as countname,
            Replace(d.UserAgent, ' ', ' ') as name
        FROM LOGINHISTORYTABLE as d  
        WHERE d.CreatedDate>  '2017-02-08' AND d.CreatedDate < '2017-02-09' AND 
           (Replace(d.UserAgent, ' ', '') like '%WindowsNT10.0%'
           OR 
           Replace(d.UserAgent, ' ', '') like '%WindowsNT6.3%')
        GROUP BY d.UserAgent
    )a
group by name
SELECT name as OS,SUM(countname) as TotalCount
    FROM
    (
        SELECT COUNT(d.UserAgent) as countname,
            Replace(d.UserAgent, ' ', ' ') as name
        FROM LOGINHISTORYTABLE as d  
        WHERE d.CreatedDate>  '2017-02-08' AND d.CreatedDate < '2017-02-09' AND 
           (Replace(d.UserAgent, ' ', '') like '%WindowsNT10.0%'
           OR 
           Replace(d.UserAgent, ' ', '') like '%WindowsNT6.3%')
        GROUP BY d.UserAgent
    )a
    GROUP BY name
WITH TranslatedOS_CTE AS (
SELECT  UserAgent,CreatedDate,
        case when UserAgent like '%NT 6.3%' then 'Windows8'
        when UserAgent like '%Windows NT 10.0%' then 'Windows10'
        else UserAgent
        end as OS        
        FROM LOGINHISTORYTABLE 
)

Select Count(0), [OS] from TranslatedOS_CTE
WHERE CreatedDate>  '2017-02-08' AND CreatedDate < '2017-02-09'
group by OS