2

希望为我们的呼叫中心创建我自己的报告/统计页面...

Table 1 (agent)
CODE....NAME
AXA     apple bottom
AXB     apple pear

Table 2 (stat)
AGENT.....CAMPAIGN....CALLS....PITCHES.....TALKTIME......dialdate 
AXA       CCC         5        2           90(sec)       2-2-2013
AXA       DDD         5        2           20(sec)       2-2-2013 
AXB       DDD         1        1           20(Sec)       2-2-2013

Table 3 (result_CCC)
AGENTID.....lcdate......samount.....upamt......termcd
AXA         2-2-2013    $10         $5         SA

Table 4 (result_DDD)
AGENTID.....lcdate......samount.....upamt......termcd
AXA         2-2-2013    $0          $0         BN
AXB         2-2-2013    $0          $0         NI

我想如下显示我的表格

Agent Name  ---  Calls ---- Pitches --- talktime --- samount --- upamt
Apple Bottom     10         4           110(sec)     $10         $5

但是电话必须是当天进行的所有电话的总和(不仅是竞选活动,也不与 TERMCD 相关),但投球必须是当天所有投球的总和(不仅是竞选活动,也不与 TERMCD 相关)但是通话时间必须是当天所有通话时间的总和(不仅仅是通过活动,并且与 TERMCD 无关) samount 必须是所有 termcd = SA 的总和,仅适用于那天 upamt 必须是所有 termcd = 的总和仅限当天的 SA

这是我现在使用的字符串,它仍然缺少一些项目:

SELECT agent.name, stats.agent, SUM(stats.calls) AS sumcalls, SUM(stats.pitches) AS     sumpitches, SUM(stats.talktime) AS sumtalktime, SUM(stats.wrapuptime) as sumwrapuptime, SUM(stats.dialtime) as sumdialtime, (SUM(stats.wrapuptime) + SUM(stats.talktime) + sum(stats.dialtime)) as sumtotal
FROM dbo.stats 
     INNER JOIN dbo.agent ON agent.code = stats.agent
WHERE (stats.agent !='' and stats.dialdate = '".($_GET['datetime'])."') and (stats.campaign = '".($_GET['camp_select'])."' or stats.campaign = '')
GROUP BY agent.name, stats.agent
ORDER BY SUM(stats.talktime) ASC";

我对此的担心是,当我开始添加 WHERE termcd = 'SA' 时,我的通话、音调、通话时间等也会发生变化,但这些列不需要受 TERMCD = 'SA' 的影响功能。

任何人都可以解释一下吗?

4

1 回答 1

0

你需要一个条件求和:

select . . .
       sum(case when termcd = 'SA' then samount end) as sa,
       sum(case when termcd = 'SA' then upamount end) as up
. . .

也就是说,不要按where子句中的条件进行过滤。只需将逻辑作为条件总和即可。

于 2013-02-25T22:28:25.267 回答