【问题标题】:SQL count names and OSSQL 计数名称和操作系统
【发布时间】:2016-02-10 19:51:03
【问题描述】:

我有一张如下所示的表格:

PC-Name     OperatingSystem
-------     ---------------
Dep01-pc1   Win7
Dep01-pc2   WinXP
Dep02-pc1   Win7
Dep02-pc2   Win7

我想查询会输出这样的结果:

Department    PC-Count  Win7-Count    WinXP-Count
----------    --------  ----------    -----------
Dep01         2         1             1
Dep02         2         2             0

这甚至可以在单个查询中完成吗?

我尝试了以下方法,但没有成功:

SELECT
    (SELECT COUNT() FROM table WHERE department LIKE '%01'),
    (SELECT COUNT() FROM table WHERE department LIKE '%01' and OS like 'Win7')

谢谢!

【问题讨论】:

  • select (select count() from table where department like '%01'), (select count() from table where department like '%01' and OS like ' Win7')

标签: sql count


【解决方案1】:

有点难看,但这可以解决问题:

SELECT Department
    ,COUNT(*) AS 'Department Count'
    ,SUM(CASE 
            WHEN OS LIKE 'Win7%'
                THEN 1
            ELSE 0
            END) AS '7 Count'
    ,SUM(CASE 
            WHEN OS LIKE 'WinXP%'
                THEN 1
            ELSE 0
            END) AS 'XP Count'
FROM (
    SELECT LEFT([PC-Name], CHARINDEX('-', [PC-Name]) - 1) AS 'Department'
        ,SUBSTRING([PC-Name], CHARINDEX('-', [PC-Name], 1) + 1, LEN([PC-Name]) - CHARINDEX('-', [PC-Name], 1)) AS 'Name'
        ,OS
    FROM machines
    ) x
GROUP BY Department

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 2020-08-25
    • 2018-10-26
    • 2019-01-19
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2020-11-04
    相关资源
    最近更新 更多