我似乎在这里遇到了困难……我现在正在做的是在一个select语句查询中进行计算。问题是...在另一个表中找不到某些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表

mysql - 如果在表中找不到数据字段,则返回0或0.00的值-MySql-LMLPHP

GNDTNDR表

mysql - 如果在表中找不到数据字段,则返回0或0.00的值-MySql-LMLPHP

预期结果

mysql - 如果在表中找不到数据字段,则返回0或0.00的值-MySql-LMLPHP

最佳答案

与表'gndsale'左连接,然后在case语句中检查id为null的情况下,返回0。
“当gndsale.id为null则0结束的情况”
我认为这可以解决您的问题

10-08 13:09