第三列相等时添加两列

时间:2018-08-29 19:13:42

标签: sql ms-access

我正在做一个左联接查询,以仅在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

1 个答案:

答案 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