2014-08-29 64 views
2

我每天都會進行相當多的數據分析並使用SQL,但我的查詢相當簡單,通常會拉動大量數據,之後我在Excel中操作,我有更多的經驗。根據不同的標準添加另一列(SQL服務器)

這一次雖然我試圖生成一些實時圖表,其中有一個SQL查詢作爲輸入。現在我不得不在我熟悉的Excel工具的幫助下創建複雜的表格。

的問題如下:

我們有回答到呼入電話和撥打境外CALS預定預約電話銷售代理。這些將產生可能導致出售的潛在客戶。針對此問題相關的表和字段是這些:

Contact Table 
Agent 

Sales Table 
Price 
OutboundCallDate 

我想知道每個電話銷售代理各自的銷售總額在一列中,而在另一個自己呼出的銷售值。

最終的結果應該是這個樣子:

 
+-------+------------+---------------+ 
| Agent | TotalSales | OutboundSales | 
+-------+------------+---------------+ 
| Tom |  30145 |    0 | 
| Sally |  16449 |   1000 | 
| John |  10500 |   300 | 
| Joe |  50710 |    0 | 
+-------+------------+---------------+ 

隨着下面的SQL我得到以下結果:

SELECT contact.agent, SUM(sales.price) 
FROM contact, sales 
WHERE contact.id = sales.id 
GROUP BY contact.agent 
 
+-------+------------+ 
| Agent | TotalSales | 
+-------+------------+ 
| Tom |  30145 | 
| Sally |  16449 | 
| John |  10500 | 
| Joe |  50710 | 
+-------+------------+ 

我想第三列添加到該查詢結果,其中價格僅在OutboundCallDate字段包含數據的記錄中相加。有點像(其中sales.OutboundCallDate不是空)

我希望這已經夠清楚了。讓我知道如果情況並非如此。

+0

這並不完全清楚你在問什麼。你想像'SUM(CASE WHERE sales.OutboundCallDate IS NOT NULL THEN sales.price ELSE 0 END)'? – Dan 2014-08-29 16:07:55

+0

你讓它看起來很簡單!我只是要糾正案件的情況下。感謝萬丹! – Sergio 2014-08-30 05:47:00

回答

2

使用CASE

SELECT c.Agent, 
     SUM(s.price) AS TotalSales, 
     SUM(CASE 
       WHEN s.OutboundCallDate IS NOT NULL THEN s.price 
       ELSE 0 
      END) AS OutboundSales 
FROM contact c, sales s 
WHERE c.id = s.id 
GROUP BY c.agent 
0

我覺得代碼看起來

SELECT contact.agent, SUM(sales.price) 
FROM contact, sales 
WHERE contact.id = sales.id AND SUM(WHERE sales.OutboundCallDate) 
GROUP BY contact.agent 
0

notI'm假設您的銷售表中包含類似的單位和價格。如果只是銷售金額,則用銷售金額字段名稱替換計算。

這裏的關鍵是,如果OutboundCallDate存在,那麼總和的值應該只是銷售額。如果OutboundCallDate不是NULL,那麼我們使用該行的值爲0。

select Agent.Agent, TotalSales = sum (sales.Price*Units) 
     , OutboundSales = sum (
       case when Outboundcalldate is not null then price*Units 
        else 0 
       end) 
    From Sales inner join Agent on Sales.Agent = Agent.Agent 
    Group by Agent.Agent