sql - ORA-00937: 一个案例内的总和在另一个案例内的总和内
问题描述
我有一个查询返回运动的总数:
SELECT
CASE PROD_TYPE
WHEN 1 THEN SUM(WEIGHT)
WHEN 2 THEN SUM(CASE MOVIMENT
1 THEN SUM(QUANTITY)
2 THEN SUM(QUANTITY * -1)
END)
END AS TOTAL
FROM TABLE
GROUP BY PROD_TYPE, MOVIMENT
这个查询给了我错误 ORA-00937,如果删除最后一个总和没有给出错误但结果不是正确的:
WHEN 2 THEN CASE MOVIMENT
1 THEN SUM(QUANTITY)
2 THEN SUM(QUANTITY * -1)
END
edit1:
我有以下数据
PROD_TYPE | 数量 | 重量 | 运动
--------2------------1100-------------0-------------1 ---
--------2------------1000-------------0----------- --1---
--------2------------1200----------------0-------- -----1---
--------2------------1200-------------0----- --------2---
*1 是输入,2 输出正确的结果是 2100,但是如果我删除最后一个总和,它将给出两个结果:3300 和 -1200
我试图将 QUANTITY 放在group by 子句,但我一直收到同样的错误。
解决方案
我想你想要:
SELECT (CASE PROD_TYPE
WHEN 1 THEN SUM(WEIGHT)
WHEN 2 THEN SUM(CASE MOVIMENT
WHEN 1 THEN QUANTITY
WHEN 2 THEN - QUANTITY
END)
END) AS TOTAL
FROM TABLE
GROUP BY PROD_TYPE, MOVIMENT;
推荐阅读
- c++ - 斐波那契数模 m
- javascript - 如何在 Javascript 中从我的 RegEx 中排除字符串?
- node.js - 如何修复 NPM 模块的 `sh: ___: command not found`
- javascript - 在 dev、beta 和 prod 环境中工作时的图像链接
- java - IntelliJ 将 .form 和 .class 分组在一个目录下,这与取消分组相同吗?
- ios - 如何根据目标编译具有不同选项的相同 CocoaPod?
- node.js - 如何使用 apollo graphQL 拼接模式?
- javascript - 在NodeJS中的回调函数之后返回一个值
- javascript - 我对全局工作者和异步的 PDF.JS 有错误
- c++ - unordered_map 什么时候返回 -1?