使用SQL COUNT创建计算列

时间:2013-11-02 12:17:23

标签: sql sql-server-2008

让我们说我在呼叫中心工作,我关闭了10个电话但当天打了20个电话。 “真实”的数字实际上是-10。即使目标是10次关闭调用,工作人员也会失败,因为打开了20个调用。

我想写一份SQL报告来反映这一点。但我的问题似乎是我无法从总计数中计算数字。

SELECT workername                       AS Name, 
       (SELECT Count(closeddate) 
        FROM   mybanksupport 
        WHERE  closeddate = NULL)       OPENCALLS, 
       (SELECT Count(closeddate) 
        FROM   mybanksupport 
        WHERE  closeddate = NOT NULL)   CLOSEDCALLS, 
       (SELECT opencalls - closedcalls) REALCALLS 
FROM   mybanksupport 

简而言之,我想计算2个列计数值,然后使用该值生成另一个名为Real Calls的计算列

2 个答案:

答案 0 :(得分:2)

COUNT仅计算值,即忽略NULL s。此属性可用于简单表达:

SELECT workername, closedCalls, totalCalls - closedCalss AS openCalls
FROM   (SELECT   workername, COUNT(closeddate) AS closedcalls, COUNT(*) totalCalls
        FROM     mybanksupport
        GROUP BY workername) t

答案 1 :(得分:0)

写为子查询,然后您可以根据需要使用字段表单

Select
  workername
, OPENCALLS
, CLOSEDCALLS
, (OPENCALLS - CLOSEDCALLS)  REALCALLS
From
(
SELECT workername                       AS Name, 
       (SELECT Count(closeddate) 
        FROM   mybanksupport 
        WHERE  closeddate = NULL)       OPENCALLS, 
       (SELECT Count(closeddate) 
        FROM   mybanksupport 
        WHERE  closeddate = NOT NULL)   CLOSEDCALLS, 
FROM   mybanksupport 
) T1