sql - 如何对基于正负列值的数据(在 SQL 服务器上)进行分组?
问题描述
我有这张桌子->
+----+-----------+-----------+
| id | gainOnX | gainOnY |
+----+-----------+-----------+
| 1 | 10 | 10 |
| 1 | -5 | 5 |
| 2 | -5 | -10 |
| 2 | -10 | 5 |
+----+-----------+-----------+
我需要按 id 对这些数据进行分组,但我需要 4 列
- 正 x 的总和(x 的总利润)
- 负 x 的总和(x 上的总损失)
- 正 y 的总和(y 的总利润)
- 负 y 的总和(y 上的总损失)
所以它应该看起来像这样 ->
+----+---------+-------+---------+-------+
| id | profitX | lossX | profitY | lossY |
+----+---------+-------+---------+-------+
| 1 | 10 | -5 | 15 | 0 |
| 2 | 0 | -15 | 5 | -10 |
+----+---------+-------+---------+-------+
解决方案
我想你只想要条件聚合:
select id,
sum(case when gainOnX > 0 then gainOnX else 0 end),
sum(case when gainOnX < 0 then gainOnX else 0 end),
sum(case when gainOnY > 0 then gainOnY else 0 end),
sum(case when gainOnY < 0 then gainOnY else 0 end)
from t
group by id;
推荐阅读
- android - 离子 3 应用程序中的 401 从本地存储接收令牌到拦截器
- typescript - tsc 在使用高阶函数时生成无用的 d.ts 文件
- android - 如何从imageview中的png获取特定颜色的所有像素
- python - 如何在我们的 python GUI 中使用 filedialog.askopenfile 打开一个文本文件
- jquery - 鼠标滚动时页面抖动
- c# - 代码分析 CA1702:CompoundWordsShouldBeCased 是如何正确实现的
- variables - 如何使用 JQ 变量作为对象键?
- php - 合并相同键的数组
- java - 选择创建多模块的最佳 Maven 策略
- python - Django - 如何将 AuthUser id(PK) 分配给用户名?