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

如果在表-MySql中找不到数据字段,则返回值0或0.00,mysql,sql,database,jointable,Mysql,Sql,Database,Jointable,我在这里似乎很拮据。。。我现在做的是在一个select语句查询中进行计算。问题是。。。有些ID在另一个表中找不到,但它们在我声明的表(gndtndr)中找到。在另一个表中找不到的ID是gndsale。我想做的是当在gndsale上找不到ID时。。。我只是将其声明为0或0.00的值,并将其作为声明的列名 我试着问我在想什么,但它不起作用:c 你能帮我吗 显示的错误是:子查询返回超过1行 我的问题是: SELECT g.ID , concat(emp.FIRSTNAME, ' ', emp.LAST

我在这里似乎很拮据。。。我现在做的是在一个select语句查询中进行计算。问题是。。。有些ID在另一个表中找不到,但它们在我声明的表(gndtndr)中找到。在另一个表中找不到的ID是gndsale。我想做的是当在gndsale上找不到ID时。。。我只是将其声明为0或0.00的值,并将其作为声明的列名

我试着问我在想什么,但它不起作用: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结束
我认为这将解决您的问题

给出示例数据和预期输出它工作了!:D我得到了我的预期结果:这是我的代码:CASE当s.EMPLOYEE为NULL时,那么“0”当s.EMPLOYEE不为NULL时,那么FORMATROUNDSUMs.AMOUNT,2,0结束声明