Примечание: EQKT
- это краткий текст об оборудовании (не об оборудовании), а EQKT~SPRAS
- это язык. Проблема: Вы написали ваше условие для выбора только текста на английском языке, поэтому игнорирует записи, которые объединены с неанглийскими, или записи, которые вообще не объединяются .
Так что, если у вас есть (число представляет ключ), ваша текстовая таблица
1 E ....
2 X ....
3 N ....
4 E ....
После объединения тексты из таблицы объединяются следующим образом:
1 E ....
2 [initial]
3 [initial]
4 E ....
После фильтрации у вас остается
1 E ....
4 E ....
Решения
Неоправданно сложное решение с использованием подзапроса исключения
С ограничениями SAP Open SQL, за исключением объединений, а также объединений, в том числе на основе записейоб отсутствии соответствующих записей из других таблиц не представляется возможным. Временные решения для исключения объединений - это, как правило, подзапросы.
Можно добавить подзапрос для проверки выбранных языков на основе вашего фильтра и игнорировать этот фильтр в других случаях (включая пустые записи).Попробуйте заменить and K~SPRAS EQ 'E'
на следующее (идея состоит в том, чтобы взять язык, если он существует, и обойти условие в противном случае):
and ( K~SPRAS in (select SPRAS from EQKT where EQUNR=V~EQUNR and spras = 'E')
OR NOT EXISTS (select SPRAS from EQKT where spras = 'E')
)
Идея в том, что у вас есть 2 подзапроса.Один из них использует положительный чек, чтобы включал все языки, которые вам нужны.Другой использует отрицательную проверку и включает записи, в которых этот конкретный язык не существует.
Обновление: минималистическое решение (соединение левой клавишей + условие)
После просмотра вашего вопроса сЯ заметил, что мое решение может быть слишком сложным для ваших нужд (даже если оно будет работать).
Стандартное левое соединение по ключу + условие выполнит ваше требование.Переместите and K~SPRAS EQ 'E'
в состояние соединения, и оно выберет именно то, что вам нужно (стандартное соединение слева).Кроме того, если я правильно помню, ключевое слово outer
ничего не делает при левом / правом соединениях.
LEFT JOIN EQKT AS K ON V~EQUNR EQ K~EQUNR AND K~SPRAS EQ 'E'
PS: псевдонимы и избыточные объединения в вопросе не помогают с его удобочитаемостью.