SELECT a, b
FROM dcl
WHERE a='123'
AND b> (
SELECT SUM(a)
+
(SELECT SUM(a)
FROM d
WHERE a= 1506453)
FROM aslp
WHERE a.a= '0527416666')
我得到的输出
a=123
b= 23
根据我在子查询中写的条件,我不应该得到上述记录。
答案 0 :(得分:1)
让我在这里做一个疯狂的猜测:其中一列
eCPClaim_total_claim_charge
eCPServiceLinePayment_Payment_Amount
ecpservicelinepaymentcobadjustment_amount
使用数据类型 float 或 real 定义,这意味着您要比较不精确的浮点数。这可以解释为什么60.06 > 51.05 + 9.01
可以评估为假,如果数字是精确的,它当然不应该。
补救措施也可能是将数据类型更改为精确的数字类型,或者将值强制转换为精确类型以进行比较。
示例SQL Fiddle演示了问题和可能的解决方法。
答案 1 :(得分:0)
如果我可以的话,那将是一个评论:) 关于第一列(ecpclaim_key),您不能只有该值或没有结果,因为where明确要求:
WHERE ecpclaim_key =' 1437190299'
对于第二栏的内容,如果没有对表及其记录的完整视图,就不可能说它是否正确;在任何情况下,如果我被迫我会打赌我的2美分在SQL框上是正确的:)
如果你能给我们提供的结果将是很好的:
SELECT SUM(ecpservicelinepaymentcobadjustment_amount)
FROM tbl_ecpservicelinepaymentcobadjustment
WHERE ecpservicelinepaymentcob_key = 1506453
和
SELECT SUM(eCPServiceLinePayment_Payment_Amount)
FROM tbl_eCPServiceLinePayment slp
WHERE slp.eCPRemit_Key = '0527416666'