我正在做一个左联接查询,以仅在F1列相同的情况下比较两个表的f9和sumoff6列上彼此不相等的任何值。如果它们不同,我想减去它们。
我得到的结果显示两个表上已经相等的值。我需要f1列在两个表上都匹配,但是如果它们在sumoff6和f9列上的值不匹配,则显示它们并减去它们。 F1在两个表上都是唯一的。请记住,尽管语句表中可能有更多的行。我正在使用MS Access SQL视图。
查询
SELECT statement.f1, statement.f9
FROM statement
LEFT JOIN allocation_final ON statement.[f1] = allocation_final[f1]
WHERE [allocation_final].sumoff6 <> statement.f9
声明表:
f1 f9
-----------------
1 135.58
2 166.30
3 40.22
4 86.46
5 170.33
6 96.40
allocation_final:
f1 SumOff6
--------------
1 135.58
2 166.30
3 40.00
4 86.46
5 170.33
6 40.22
7 22.40
8 70.00
9 96.40
10 50.00
结果
f1 f9
--------------
1 135.58
2 166.3
4 86.46
5 170.33
更新:
我想要的结果是,如果f1 = f3和f3 <> sumoff6,则显示输出。如下所示,例如,如果结果相同,它仍然会显示结果。查看第一行,该行不应该出现在第一行,因为f9 = sumoff6。
查询:
SELECT statement.f1, statement.f9, allocation_2.[f3], allocation_2.sumoff6
FROM allocation_2 LEFT JOIN statement ON allocation_2.[f3]=statement.f1
WHERE statement.f9 <> allocation_2.sumoff6
GROUP BY statement.f1, statement.f9, allocation_2.[f3], allocation_2.sumoff6
ORDER BY statement.f1;
输出:
f1 f9 f3 sumoff6
--------------------------------------
123456789 135.58 123456789 135.58
111111111 166.3 111111111 66.3
222222222 86.46 222222222 86.46
333333333 170.33 333333333 170.33
444444444 135.58 444444444 35.58
555555555 125.74 555555555 125.74
666666666 73.49 666666666 23.49
777777777 187.99 777777777 87.99
答案 0 :(得分:2)
我认为您的第一个查询基本上是正确的。问题可能是数字外观相同但实际上不同。这样是否可以解决问题?
SELECT statement.f1, statement.f9
FROM statement INNER JOIN
allocation_final
ON statement.[f1] = allocation_final[f1]
WHERE ABS([allocation_final].sumoff6 - statement.f9) < 0.01