Return 如果在 table - MySql 中找不到数据字段,则值为 0 或 0.00
Return a value of 0 or 0.00 if data field is not found in table - MySql
我似乎有点手忙脚乱...我现在正在做的是在一个 select 语句查询中进行计算。问题是...有些 ID 在另一个 table 中找不到,但它们在我声明的 table 中找到,即 gndtndr。在另一个 table 上找不到的 ID 是 gndsale。我想要做的是,当在 gndsale 上找不到 ID 时...我只是将其声明为 0 或 0.00 的值并将其作为列名 已宣布。
我尝试查询我的想法,但它不起作用:c
你能帮我解决这个问题吗?
显示的错误是:子查询 returns 多于 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
GNDTNDR TABLE
预期结果
左连接 table 'gndsale' 然后在 case 语句中检查 id 在这种情况下为 null return 0。
"case when gndsale.id is null then 0 end"
我想这会解决你的问题
我似乎有点手忙脚乱...我现在正在做的是在一个 select 语句查询中进行计算。问题是...有些 ID 在另一个 table 中找不到,但它们在我声明的 table 中找到,即 gndtndr。在另一个 table 上找不到的 ID 是 gndsale。我想要做的是,当在 gndsale 上找不到 ID 时...我只是将其声明为 0 或 0.00 的值并将其作为列名 已宣布。
我尝试查询我的想法,但它不起作用:c 你能帮我解决这个问题吗?
显示的错误是:子查询 returns 多于 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
GNDTNDR TABLE
预期结果
左连接 table 'gndsale' 然后在 case 语句中检查 id 在这种情况下为 null return 0。 "case when gndsale.id is null then 0 end" 我想这会解决你的问题