Добавление двух столбцов, когда третий столбец равен - PullRequest
0 голосов
/ 29 августа 2018

Я делаю запрос на соединение слева, чтобы сравнить две таблицы для любых значений, которые не равны друг другу ТОЛЬКО в столбцах f9 и sumoff6, если столбцы F1 совпадают. Если они разные, я бы хотел вычесть их.

Результаты, которые я получаю, показывают одинаковые значения, которые уже есть в обеих таблицах. Мне нужно, чтобы столбцы f1 совпадали в обеих таблицах, но если их значения в столбцах sumoff6 и f9 не совпадают, отобразите их и вычтите их. F1 уникален на обеих таблицах. Имейте в виду, что в таблице операторов может быть больше строк. Я использую MS Access SQL view.

Запрос

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 голосов
/ 29 августа 2018

Я думаю, что ваш первый запрос в основном правильный. Проблема, вероятно, в том, что числа выглядят одинаковыми, но на самом деле они разные. Устраняет ли это проблему?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...