2013-02-25 38 views
2

展望創建自己的報告/統計頁面爲我們的呼叫中心...從多個表,MSSQL,PHP中獲取數據,阿帕奇

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) 但通話時間必須是所有的通話瘋狂的SUM e當天(不僅僅是通過活動而且不與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'功能的影響。

任何人都可以點亮一下嗎?

+0

抱歉,無法弄清楚如何格式化我的表更好看和可讀性。 – 2013-02-25 21:37:11

+2

您可以在這裏創建您的選項卡的示例:http://sqlfiddle.com/。然後玩這個查詢會更容易。它看起來好像你需要子選擇。所以'(從1 = 1的表中選擇一些東西)「。 – webnoob 2013-02-25 22:00:04

+0

感謝webnoob ......已經研究子查詢,不知道我理解他們100%。 – 2013-02-25 22:16:06

回答

0

你需要一個條件求和:

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

也就是說,通過標準的where子句中不過濾。只要把邏輯作爲一個有條件的總和。

+0

謝謝戈登,會試試這個 – 2013-02-26 14:07:39