我似乎在这里紧张......我现在正在做的是在一个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
GNDTNDR表
预期结果
答案 0 :(得分:1)
左边加入桌子' gndsale'然后在case case语句中检查id为null,在这种情况下返回0。 " gndsale.id为null然后0结束" 我认为这将解决您的问题