Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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_Sql Server - Fatal编程技术网

基于不同条件添加另一列(SQL server)

基于不同条件添加另一列(SQL server),sql,sql-server,Sql,Sql Server,我每天都会进行大量的数据分析并使用SQL,但我的查询非常简单,通常会提取大量数据,然后在excel中进行操作,在excel中我的经验要丰富得多 不过这次我尝试生成一些活动图表,这些图表的输入是一个SQL查询。我现在必须创建复杂的表格,而不需要借助我非常熟悉的excel工具 问题如下: 我们有电话销售代理,通过接听入站电话和发出出站CAL来预约。这些将产生潜在销售线索。此问题的相关表格和字段如下: Contact Table Agent Sales Table Price OutboundCal

我每天都会进行大量的数据分析并使用SQL,但我的查询非常简单,通常会提取大量数据,然后在excel中进行操作,在excel中我的经验要丰富得多

不过这次我尝试生成一些活动图表,这些图表的输入是一个SQL查询。我现在必须创建复杂的表格,而不需要借助我非常熟悉的excel工具

问题如下:

我们有电话销售代理,通过接听入站电话和发出出站CAL来预约。这些将产生潜在销售线索。此问题的相关表格和字段如下:

Contact Table
Agent

Sales Table
Price
OutboundCallDate
我想知道每个电话销售代理在一列中各自的销售总额,在另一列中各自的对外销售价值

最终结果应该如下所示:

+-------+------------+---------------+ | Agent | TotalSales | OutboundSales | +-------+------------+---------------+ | Tom | 30145 | 0 | | Sally | 16449 | 1000 | | John | 10500 | 300 | | Joe | 50710 | 0 | +-------+------------+---------------+ +-------+------------+ |代理人|总销售额| +-------+------------+ |汤姆| 30145| |萨莉| 16449| |约翰| 10500| |乔| 50710| +-------+------------+ 我想在此查询结果中添加第三列,其中仅对
OutboundCallDate
字段包含数据的记录求和价格。有点像(其中
sales.OutboundCallDate
不为空)


我希望这足够清楚。如果不是这样,请告诉我。

我认为代码看起来

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


不,我假设你的销售表中有单位和价格之类的东西。如果只是销售金额,则将计算替换为销售金额字段名

这里的关键是,如果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

你问什么还不完全清楚。您想要类似于
SUM(sales.OutboundCallDate不为NULL,然后sales.price ELSE 0 END)的内容吗?
?您让它看起来非常简单!我只需要在何时何地纠正错误。谢谢你,丹!
SELECT contact.agent, SUM(sales.price)
FROM contact, sales
WHERE contact.id = sales.id AND SUM(WHERE sales.OutboundCallDate)
GROUP BY contact.agent
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 
    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