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