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

标签 mysql sql database join

我似乎在这里陷入困境...我现在正在做的是在一个选择语句查询中进行计算。问题是...某些 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表

gndsale table

GNDTNDR 表

gndtndr table

预期结果

expected result

最佳答案

与表“gndsale”进行左连接,然后在 case 语句中检查 id 是否为 null,在这种情况下返回 0。 “gndsale.id 为 null 则 0 结束的情况” 我想这会解决你的问题

关于mysql - 如果在表中找不到数据字段,则返回值 0 或 0.00 - MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275459/

相关文章:

php - 如何获得一个空的关联数组?

sql - 如果表中的下一条记录与特定字段中的值相同,如何删除一条记录

Mysql错误代码: 1067 two timestamp column

sql-server - 哪个版本的SQL Server支持.Net framework 4.5?

database - postgresql 函数数据插入与 python

php - mysql_num_rows PHP

MySQL Count + GroupBy & OrderBy 和最后一条记录

java - 从 postgresql 填充 jTable

mysql - mySQL 事务是否所有受影响的表 "locked"?

仅当第二列是特定值时,两列的 MySQL 唯一约束