繁体   English   中英

SQL 检查条件时 CASE 语句错误

[英]SQL CASE Statement Error while checking conditions

场景是我有两列,一列是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() ,也许。

聚苯乙烯。 output 中的TYPE形式上不正确(与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'

您检查过CASE的语法吗?我认为您在查询中缺少ELSE部分

例如:-

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END
FROM OrderDetails;

检查这里的语法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM