Мне нужно написать логическое представление или 2 для обработки устаревшего Query/400. Первый запрос создает временный файл, который является входным для второго запроса (а второй создает временный файл для третьего запроса). Цель состоит в том, что мы хотим увидеть, у каких клиентов нет «корректирующего» заказа, который мы получаем во втором запросе.
В первом запросе он выбирает из OEINH1 и сопоставляет с Address_Table, чтобы получить адрес электронной почты клиента, и выбирает на
T01.IHDOCD DOCUMENT DATE
T01.IHENT# ENTITY NUMBER
T01.IHSFX# SUFFIX NUMBER
T01.IHINV# INVOICE NUMBER
T02.ADINTA INTERNET ADDRESS
Эти столбцы и выбор записи:
IHORDT EQ 'INT' **** order type
AND IHVIAC NLIST 'PML' 'FCM'
AND ADSFX# EQ '000'
Второй запрос соответствует IHENT# (cust #) И выбирает по этому:
IHORDT LIST 'COR' 'COE'
и записывает все столбцы как из первого временного файла, так и из того же OEINH1 во второй временный файл.
Повторить это именно в SQL проблематично, потому что есть повторяющиеся имена полей. По сути, я думаю, что нужно взять первый временный файл, а затем получить два других типа заказов, которые есть у этого клиента (COR COE).
Это что-то вроде этого
Select *
from TEMP FILE1
where ENT in (Select *
from OEINH1
where IHORDT in ('COR' "COE')
имеет ли это смысл в зависимости от того, что делает запрос / 400?
Затем последний запрос QUERY/400 сравнивает 2 временных файла, используя UNMATCHED для типа соединения. Таким образом, мы можем знать, какие записи находятся в первом проходе, но не во втором временном файле.