mysql - 检查条件时出现 SQL CASE 语句错误
问题描述
场景是我有两列,一列是Quantity,另一列是Type。现在我要做的是检查类型是否为“rec”,然后它从数量中获取所有值并添加它们,如果类型为“问题”,那么它将只获取那些类型正在接收的字段并将它们全部添加到ITEM ID的基础。我写的 SQL 查询在这里:
SELECT f.`Itemm_ID`,ABS(SUM(f.`Quantity`)) AS recieving, TYPE ,
(CASE
WHEN f.`Type` = 'issue'
THEN ABS(SUM(f.`Quantity`))
END)
FROM stock_journal AS f
WHERE f.`Itemm_ID`='1'
现在事情是一切正常,除了返回 null 的 CASE 语句。请帮助我解决我的问题。谢谢
解决方案
看来你需要在
SELECT f.`Itemm_ID`,
ABS(SUM(f.`Quantity`)) AS recieving,
TYPE,
ABS(SUM(CASE WHEN f.`Type` = 'issue'
THEN f.`Quantity`
ELSE 0
END))
FROM stock_journal AS f
WHERE f.`Itemm_ID`='1'
PS。f.Quantity
可能是负数吗?如果没有,那ABS()
就是多余的。如果它可能那么ABS()
必须包裹内部f.Quantity
,而不是整体SUM()
,也许。
聚苯乙烯。TYPE
in 输出形式上是不正确的(与 矛盾ONLY_FULL_GROUP_BY
),我建议用ANY_VALUE()
.
我没有得到您对具有价值的包装类型的建议,请您详细说明一下。
我的意思是(也许,我不确定)你需要
SELECT f.`Itemm_ID`,
SUM(ABS(f.`Quantity`)) AS recieving,
TYPE,
SUM(CASE WHEN f.`Type` = 'issue'
THEN ABS(f.`Quantity`)
ELSE 0
END)
FROM stock_journal AS f
WHERE f.`Itemm_ID`='1'
推荐阅读
- javascript - 将 openlayers 与 typescript 项目一起使用
- visual-studio - 尝试使用新安装的 Visual Studio 进行调试,但在我的浏览器窗口中出现此错误
- python - 在 Python 三重引号中使用 { 并替换参数
- javascript - 如何覆盖 ClearIndicator 的 onClick 以在 react-select 中对清除进行模糊控制?
- oracle - oracle count 记录每日加入
- gis - GeoServer - 存储被标记为禁用,但仍为图层提供服务
- java - 需要哪些 ReastEasy 4 客户端依赖项?
- python - Tensorflowjs 需要 3 个维度,尽管我在 Python 中使用 2 个维度对其进行了训练
- flutter - 如何正确使用“flutter --no-build”(或加快仅更改 Dart 代码的构建)?
- kotlin - 如何在 Kotlin 中正确编写此正则表达式以测试 Pascal 中的代码