Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在两个表中查找不相等的行_Sql_Ms Access - Fatal编程技术网

Sql 在两个表中查找不相等的行

Sql 在两个表中查找不相等的行,sql,ms-access,Sql,Ms Access,我正在执行一个左连接查询,以便仅当F1列相同时,才比较f9和SUMOF6列上两个表是否存在任何不相等的值。如果它们不同,我想减去它们 我得到的结果显示了两个表中已经存在的相等值。我需要f1列在两个表上匹配,但如果它们在SUMOFF 6和f9列上的值不匹配,则显示它们并减去它们。F1在两个表上都是唯一的。请记住,语句表中可能有更多行。我正在使用MS Access SQL视图 质疑 最终分配: f1 SumOff6 -------------- 1 135.58 2 16

我正在执行一个左连接查询,以便仅当F1列相同时,才比较f9和SUMOF6列上两个表是否存在任何不相等的值。如果它们不同,我想减去它们

我得到的结果显示了两个表中已经存在的相等值。我需要f1列在两个表上匹配,但如果它们在SUMOFF 6和f9列上的值不匹配,则显示它们并减去它们。F1在两个表上都是唯一的。请记住,语句表中可能有更多行。我正在使用MS Access SQL视图

质疑

最终分配:

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;

非常简单,使用两个连接,每个连接代表两个条件,然后当两个条件都满足时,case when将进行减法(T1),或者当只有一个条件满足时,只给出第一个值(T)。

如果我没有误解您的话。您想将f1列和匹配行中的两个表合并在一起,SUMOF6列和f9列是相同的,然后显示它们,如果它们不相同,则将它们减去。还好吗?您的预期结果是什么?要连接到f1列中具有唯一值的表。我想找出f9和SUMOF6列的不同之处,然后减去那些等于f1但f9/SUMOF6不同的列。这是否适用于access sql视图?因为我在查询的这一部分中遇到语法错误(缺少运算符)。如果t1.[sumoff6]为null,那么t.[f9]-t.[sumoff6]如果t1.[sumoff6]为null,那么t.[f9]将结束为[total],这给了我一个语法错误:语句。[f1]=allocation\u final。[f1]左连接allocation\u final t1 ON语句。[f1]=allocation\u final。[f1]你好,Matt我让查询正常工作了。我有个问题。它给了我f9和SUMOF6列之间的差异,但不准确。我认为这是因为语句列中有更多的行,因为f1在同一行的两个表中都不匹配,它认为f9值丢失,但实际上没有。有没有办法让查询搜索另一个表中的f1列,以确保SUMOF6值是否不同?换句话说,两个表中的f1列只是在不同的行中出现,而查询认为在另一个表中缺少该列。所有这些查询只有在f1与两个表上的行逐行匹配时,我才能从工作中获得帮助。我已使两个表在f1列上相等,没有重复的行。但是,即使我将f1=f1和f9 SUMOF6放在输出查询中,我仍然会得到行数相等的数据。有人能帮忙吗?我正在使用左连接,所以不知道为什么我会得到这个。嗨,Marlan。此查询仍会减去f9、SUMOF6列,即使分配为_final.f1 statement.f1。f1不确定其是否正确,因为两个表中的f1不完全匹配,因为语句表中的行数更多。
f1     f9                 
--------------
1      135.58
2      166.3
4       86.46
5      170.33
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
SELECT statement.f1, iif([allocation_final].sumoff6 = statement.f9, statement.f9, [allocation_final].sumoff6 - statement.f9)
FROM statement LEFT JOIN allocation_final 
ON statement.[f1] = allocation_final[f1]
SELECT 
switch(t1.[sumoff6] is null,t.[f9] - t.[sumoff6],
t1.[sumoff6] is not null, t.[f9])
FROM statement 
LEFT JOIN allocation_final t ON statement.[f1] = allocation_final[f1] 
LEFT JOIN allocation_final t1 ON statement.[f1] = allocation_final[f1] AND 
statement.[f9] = allocation_final[sumoff6]