我似乎在这里陷入困境...我现在正在做的是在一个选择语句查询中进行计算。问题是...某些 ID 在另一个表中找不到,但在我声明的表中找到,即 gndtndr。在另一个表中找不到的 ID 是 gndsale。我想做的是,当在 gndsale 上找不到 ID 时...我只需将其声明为 0 或 0.00 的值,并将其作为列名称 DECLARED。
我尝试查询我的想法,但它不起作用:c 你能帮我解决这个问题吗?
显示的错误是:子查询返回超过 1 行
这是我的查询:
SELECT g.ID , concat(emp.FIRSTNAME, ' ', emp.LASTNAME) Fullname,
(CASE
when (select DISTINCT ID from gndtndr where ID NOT IN (select
ID from gndsale)) then '0'
else
FORMAT(ROUND(SUM(s.AMOUNT), 2),0)
END) as DECLARED,
FORMAT(ROUND(SUM(G.amount), 2),0) as CALCULATED,
FORMAT(ROUND(SUM(G.amount), 2) - ROUND(SUM(S.AMOUNT),2),0) AS `CASH SHORT`
FROM gndtndr g JOIN emp ON emp.ID = g.ID JOIN gndsale s on
g.ID=S.ID JOIN adjtime a on a.ID = g.ID group by
ID
下面是示例数据和我的预期结果
GNDSALE表
GNDTNDR 表
预期结果
最佳答案
与表“gndsale”进行左连接,然后在 case 语句中检查 id 是否为 null,在这种情况下返回 0。 “gndsale.id 为 null 则 0 结束的情况” 我想这会解决你的问题
关于mysql - 如果在表中找不到数据字段,则返回值 0 或 0.00 - MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275459/