sql - 对一列求和并对结果执行更多计算?
问题描述
在下面的查询中,我根据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。
解决方案
您不能以与您尝试相同的方式使用一列来创建另一列。您有 2 个选项:
- 进行完整的计算(正如@forpas 在上面的评论中提到的那样)
- 使用临时表或表变量来存储数据,这样您可以获得前 5 列,然后您可以添加最后一列,或者您可以从临时表中选择并从那里进行最后一列计算。
推荐阅读
- c# - 获取对象值字典数组的对象的值“字典
" - java - LinkedHashMap的性能:大O、内存开销等
- android-listview - 如何自定义使用 sqliteopenhelper 的列表视图?
- angularjs - AngularJS 在新请求上中止先前的请求
- javascript - 检查django中的选项选择是否为空
- sql - 编写一个 SELECT 语句,从 db1.MyGuitarShop.Products 表中返回这些列:
- flutter - 向上滚动时隐藏底部导航栏
- r - 为新创建的因子组创建一个新列分组数字 (num)
- winforms - 如果主窗体或它所在的任何用户控件被移动或调整大小,则更改窗体位置
- angular - 在父视图中渲染 elementReference