sql - SQL 如何将多个字段与 Case 和 Sum 语句结合起来
问题描述
我试图通过首先将多个数据点重命名为相似名称并将这些数量相加来聚合我的数据。我尝试了以下方法:
select CASE
when Category='1' or Category='2' Then 'TEST'
when Category='3' Then 'ACTUAL'
else category end As Activity,
sum(case when quantity >0 then quantity end) from DataBase
Group By category
输出是这样的:
Activity | Quantity
Test | 8
Actual | 20
Test | 2
但是,我希望它看起来像这样:
Activity | Quantity
Test | 10
Actual | 20
解决方案
一些数据库允许在 中使用别名GROUP BY
,但不是全部。您可以重复CASE
表达式:
select (case when Category in ('1', '2') then 'TEST'
when Category = '3' then 'ACTUAL'
else category
end) As Activity,
sum(case when quantity >0 then quantity end)
from DataBase
group by (case when Category in ('1', '2') then 'TEST'
when Category = '3' then 'ACTUAL'
else category
end);
请注意,某些数据库允许您编写:
group by Activity
推荐阅读
- java - Java递归添加到列表
- html - 删除在我的容器内创建的空间
- tensorflow - 为什么我的自定义层在keras中失败了?
- regex - 带有通配符子域的 Apache http.conf
- java - db.query 无法使用整数字段进行选择
- facebook - 如何从页面帖子的评论中获取用户使用提要
- javascript - 通过动态创建的 JavaScript 按钮重定向到 URL
- ios - 如何让用户通过使用 iOS 应用设置中的开关来更改他们的广告同意(个性化或非个性化)?
- reactjs - 自定义材质 UI 工具提示
- excel - 在excel vba中检查多个文件名