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

时间:2017-05-31 04:07:56

标签: mysql sql database jointable

我似乎在这里紧张......我现在正在做的是在一个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 TABLE

gndsale table

GNDTNDR表

gndtndr table

预期结果

expected result

1 个答案:

答案 0 :(得分:1)

左边加入桌子' gndsale'然后在case case语句中检查id为null,在这种情况下返回0。 " gndsale.id为null然后0结束" 我认为这将解决您的问题