Я бы написал запрос следующим образом:
SELECT d.project_no, d.doc_no, d.doc_class, d.disc_id,
d.project_id AS COMMENT,
(CASE WHEN td.disc_id = 'KN' THEN td.project_id = 'YES' END)
FROM technical_document d LEFT JOIN
tag_document td
ON d.doc_no = td.proj_doc_doc_no
WHERE d.proj_doc_doc_no IS NULL AND
d.project_no like '%%' AND -- not needed
d.doc_class IN ('A', 'S', 'SE') AND
d.Lci_Code IN ('A', 'A1', 'B');
Во-первых, у вас есть предложение WHERE
, в котором говорится, что совпадения нет.Следовательно, включение столбцов в SELECT
из tag_document
не имеет смысла.Я подозреваю, что вы намереваетесь:
SELECT d.project_no, d.doc_no, d.doc_class, d.disc_id,
d.project_id as COMMENT,
(CASE WHEN td.disc_id = 'KN' THEN td.project_id = 'YES' END)
FROM technical_document d LEFT JOIN
tag_document td
ON d.doc_no = td.proj_doc_doc_no AND td.disc_id = 'KN'
WHERE d.project_no like '%%' AND -- not needed
d.doc_class IN ('A', 'S', 'SE') AND
d.Lci_Code IN ('A', 'A1', 'B');
Обратите внимание, что условие td
в предложении WHERE
было удалено.
Кроме того:
- Таблицапсевдонимы облегчают написание и чтение запроса.
= ANY
разрешен, но разговорный оператор - IN
. - Исправлены различные небольшие синтаксические ошибки - пропущены запятые, пропущены
END
.