首页 > 解决方案 > 在 SQL 中使用 Have 但没有得到任何结果

问题描述

我想要三个表之间的条件结果

Givers, Yateem, TakeMoney

给予者

AccountNo, Mobile 

亚特姆

AccountNo, Money

取钱

AccountNo, MoneyTaken

显示所有AccountNo来自TakeMoneynot inGivers或 in Giversbut

sum(TakeMoney.MoneyTaken) < Sum(Yateem.Money) * '3'

where TakeMoney.date Like '10-10-2020'

我用过这个,但它不起作用

SELECT
    Givers.AccountNo, Givers.GMob, 
    COALESCE(SUM(Yateem.Money), 0) AS YateemMoney,    
    COALESCE(SUM(Yateem.Money), 0) * '3' AS MonWant
FROM
    Givers
LEFT JOIN 
    Yateem ON Givers.AccountNo = Yateem.AccountNo
GROUP BY 
    Givers.AccountNo, Givers.GMob
HAVING 
    COALESCE(COUNT(Yateem.Money), 0) > '0' 
    AND (AccountNo NOT IN (SELECT AccountNo FROM TakeMoney 
                           WHERE date LIKE '10-10-2020') 
         OR COALESCE(COUNT(Yateem.Money), 0) * '3' > (SELECT COALESCE(SUM(MoneyTaken), 0) 
                                                      FROM TakeMoney 
                                                      WHERE date LIKE '10-10-2020')

标签: sql

解决方案


数字数据不是字符串:* '3'=>* 3

COALESCE(Count(Yateem.Money),0) > '0'Count(Yateem.Money) > 0与将外部联接转换为内部联接相同。

(AccountNo not in(select应该导致不明确的列名错误,因为它不合格。

COALESCE(Count(Yateem.Money),0)*'3' > (select COALESCE(Sum(MoneyTaken),0)将行数与金额进行比较?顺便说一句,再次不需要 COALESCE。

date Like '10-10-2020'使用 LIKE 进行日期比较?无论date是日期还是字符串,LIKE 都没用,完全一样=


推荐阅读