Я выполняю запрос левого соединения, чтобы сравнить две таблицы для любых значений, которые не равны друг другу в столбцах f9 и sumoff6, ТОЛЬКО если столбцы F1 одинаковы. Если они разные, я бы вычел их.
Результаты, которые я получаю, показывают одинаковые значения, которые уже есть в обеих таблицах. Мне нужно, чтобы столбцы 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
Хотите присоединиться к таблицам с уникальными значениями в столбце f1. Я хочу найти, где различаются столбцы f9 и sumoff6, а затем вычесть те столбцы, которые равны f1, но отличаются f9 / sumoff6


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]
Привет, Марлан. Этот запрос по-прежнему вычитает столбцы f9, sumoff6, даже если allocation_final.f1 <> statement.f1
Не уверен, что это потому, что 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]
Довольно просто, используйте два объединения, каждое из которых представляет два условия, а затем случай, когда будет вычитаться, когда оба условия выполнены (T1), или просто дать первое значение, когда выполняется только одно условие (T).
будет ли это работать с доступом к просмотру sql? потому что я получаю синтаксическую ошибку (отсутствует оператор) в этой части запроса. СЛУЧАЙ, КОГДА t1. [Sumoff6] равно нулю ТОТ t. [F9] - t. [Sumoff6] Когда t1. [Sumoff6] не равно нулю, ТО t. [F9] END as [total]
давая мне здесь синтаксическую ошибку: оператор. [f1] = allocation_final. [f1] LEFT JOIN allocation_final t1 ON statement. [f1] = allocation_final. [f1]
Привет, Мэтт, я получил запрос на работу. У меня возник вопрос. Это дает мне расхождения между столбцами f9 и sumoff6, но неточно. Я думаю, это связано с тем, что в столбце оператора больше строк, поскольку f1 не совпадает в обеих таблицах в ОДНОЙ строке, он думает, что значение f9 отсутствует, но на самом деле это не так. Есть ли способ выполнить поиск по столбцу f1 в другой таблице, чтобы убедиться, что значение sumoff6 отличается или нет? Другими словами, столбец f1 присутствует в обеих таблицах только в разных строках, и запрос считает, что его нет в другой таблице.
по всем этим запросам я получаю помощь только в том случае, если f1 совпадает строка за строкой в обеих таблицах.
Я сделал обе таблицы равными по столбцам F1 без повторяющихся строк. Однако я все еще получаю данные с одинаковыми строками в моем выходном запросе, хотя я поставил f1 = f1 и f9 <> sumoff6. Может кто-нибудь помочь? Я использую левое соединение, поэтому не понимаю, почему я получаю это.
пожалуйста, посмотрите мой исходный пост после "обновления". Я только что отредактировал набор результатов, который вы просили.
если я вас не неправильно понял. Вы хотите объединить две таблицы в столбце f1 и в совпадающих строках, столбец sumoff6 и столбец f9 одинаковый, затем отобразите, если они не совпадают, а затем вычтите их. все в порядке? Каков ваш ожидаемый результат?