首页 > 解决方案 > 对一列求和并对结果执行更多计算?

问题描述

在下面的查询中,我根据Status列计算表中的出现次数。我还想根据我返回的计数执行计算。例如,假设我想在Snoozed值上加 100……我该怎么做?以下是我认为会做的事情:

SELECT 
    pu.ID Id, pu.Name Name,
    COUNT(*) LeadCount, 
    SUM(CASE WHEN Status = 'Working' THEN 1 ELSE 0 END) AS Working,
    SUM(CASE WHEN Status = 'Uninterested' THEN 1 ELSE 0 END) AS Uninterested,
    SUM(CASE WHEN Status = 'Converted' THEN 1 ELSE 0 END) AS Converted,
    SUM(CASE WHEN SnoozedId > 0 THEN 1 ELSE 0 END) AS Snoozed,
    Snoozed + 100 AS Test
FROM
    Prospects p
INNER JOIN 
    ProspectsUsers pu on p.OwnerId = pu.SalesForceId
WHERE 
    p.Store = '108'
GROUP BY 
    pu.Name, pu.Id
ORDER BY 
    Name

我收到此错误:

列名“延后”无效。

如何获取前一个 SUM 语句的值,将其加 100,然后将其作为另一列返回?我的目标是增加一个标记为测试的列,它的贪睡计数 + 100。

标签: sqlsql-server

解决方案


您不能以与您尝试相同的方式使用一列来创建另一列。您有 2 个选项:

  1. 进行完整的计算(正如@forpas 在上面的评论中提到的那样)
  2. 使用临时表或表变量来存储数据,这样您可以获得前 5 列,然后您可以添加最后一列,或者您可以从临时表中选择并从那里进行最后一列计算。

推荐阅读