Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:按行求和以输出_Sql Server_Sum_Row - Fatal编程技术网

Sql server SQL Server:按行求和以输出

Sql server SQL Server:按行求和以输出,sql-server,sum,row,Sql Server,Sum,Row,尝试显示与输出相同的行的总和 下面是SQL代码 SELECT replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','') as Site, Count (CASE WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'

尝试显示与输出相同的行的总和

下面是SQL代码

SELECT 
    replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','') as Site,
    Count (CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Windows%' THEN 1
           END) AS 'Windows-SEP-11',
    Count (CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Mac%' THEN 1
           END) AS 'Mac-SEP-11',
    Count(CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Windows%' THEN 1
          END) AS 'Windows-SEP-12',
    Count(CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Mac%' THEN 1
          END) AS 'Mac-SEP-12'
FROM   
    dbo.sem_computer
INNER JOIN 
    [dbo].[V_SEM_COMPUTER] ON [dbo].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
INNER JOIN 
    dbo.SEM_AGENT ON SEM_COMPUTER.COMPUTER_ID = dbo.SEM_AGENT.COMPUTER_ID
INNER JOIN 
    dbo.SEM_CLIENT ON dbo.SEM_CLIENT.COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
INNER JOIN 
    dbo.IDENTITY_MAP ON dbo.SEM_CLIENT.GROUP_ID = IDENTITY_MAP.ID
INNER JOIN 
    dbo.PATTERN ON dbo.PATTERN.PATTERN_IDX = dbo.SEM_AGENT.PATTERN_IDX
WHERE  
    Name LIKE '%31r%'
GROUP BY
    dbo.IDENTITY_MAP.Name
ORDER BY
    Site
这是输出

但是,我希望输出看起来像

我更新了SQL代码,在Count周围添加了
SUM()
,并按名称分组,得到了错误

无法对包含聚合或子查询的表达式执行聚合函数

代码:


谢谢

您的分组依据需要与您想要的分组依据完全匹配。由于要更改“dbo.IDENTITY\u MAP.Name”的文本,因此需要将其用作分组依据

SELECT replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','') as Site,
                   Count (CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Windows%' THEN 1
                          END) AS 'Windows-SEP-11',
                   Count (CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Mac%' THEN 1
                          END) AS 'Mac-SEP-11',
                   Count(CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Windows%' THEN 1
                          END) AS 'Windows-SEP-12',
                   Count(CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Mac%' THEN 1
                          END) AS 'Mac-SEP-12'
            FROM   dbo.sem_computer
                   INNER JOIN [dbo].[V_SEM_COMPUTER]
                           ON [dbo].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
                   INNER JOIN dbo.SEM_AGENT
                           ON SEM_COMPUTER.COMPUTER_ID = dbo.SEM_AGENT.COMPUTER_ID
                   INNER JOIN dbo.SEM_CLIENT
                           ON dbo.SEM_CLIENT.COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
                   INNER JOIN dbo.IDENTITY_MAP
                           ON dbo.SEM_CLIENT.GROUP_ID = IDENTITY_MAP.ID
                   INNER JOIN dbo.PATTERN
                           ON dbo.PATTERN.PATTERN_IDX = dbo.SEM_AGENT.PATTERN_IDX
            WHERE  Name LIKE '%31r%'
            Group by replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','')
            Order by Site
SELECT replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','') as Site,
                   Count (CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Windows%' THEN 1
                          END) AS 'Windows-SEP-11',
                   Count (CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '11.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Mac%' THEN 1
                          END) AS 'Mac-SEP-11',
                   Count(CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Windows%' THEN 1
                          END) AS 'Windows-SEP-12',
                   Count(CASE
                            WHEN dbo.SEM_AGENT.AGENT_VERSION LIKE '12.%'
                                AND dbo.SEM_COMPUTER.OPERATION_SYSTEM LIKE 'Mac%' THEN 1
                          END) AS 'Mac-SEP-12'
            FROM   dbo.sem_computer
                   INNER JOIN [dbo].[V_SEM_COMPUTER]
                           ON [dbo].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
                   INNER JOIN dbo.SEM_AGENT
                           ON SEM_COMPUTER.COMPUTER_ID = dbo.SEM_AGENT.COMPUTER_ID
                   INNER JOIN dbo.SEM_CLIENT
                           ON dbo.SEM_CLIENT.COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
                   INNER JOIN dbo.IDENTITY_MAP
                           ON dbo.SEM_CLIENT.GROUP_ID = IDENTITY_MAP.ID
                   INNER JOIN dbo.PATTERN
                           ON dbo.PATTERN.PATTERN_IDX = dbo.SEM_AGENT.PATTERN_IDX
            WHERE  Name LIKE '%31r%'
            Group by replace(replace(replace(replace(dbo.IDENTITY_MAP.Name,'My Company\',''),'-VLAN2',''),'.VLAN2\',''),'.Instr\','')
            Order by Site