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

*** РЕШЕНИЕ ВНУТРИ **** Я пытаюсь добавить комментарий в последний столбец моего запроса, в основном, если technical_document.disc_id содержит «KN», то я хочу добавить комментарий в последний столбец запроса »ОК '

, но я не могу заставить его работать

    SELECT 

technical_document.project_no,
technical_document.doc_no,
technical_document.doc_class,
technical_document.disc_id,
tag_document.project_id AS "COMMENT"

CASE WHEN technical_document.disc_id = 'KN' THEN tag_document.project_id = "YES"

FROM technical_document left join tag_document on technical_document.doc_no = tag_document.proj_doc_doc_no



WHERE tag_document.proj_doc_doc_no IS NULL
AND technical_document.project_no like '%%'
AND technical_document.doc_class = ANY ('A','S','SE')
AND technical_document.Lci_Code = ANY ('A','A1','B')

Спасибо за вашу помощь, вот как это было решено, извините за смущающее / вводящее в заблуждение объяснение с моей стороны:

SELECT 

technical_document.project_no,
technical_document.doc_no,
technical_document.doc_class,
technical_document.disc_id, 

CASE 
            WHEN technical_document.disc_id LIKE 'KN' THEN 'OK'
            WHEN technical_document.disc_id LIKE 'K6' THEN 'OK'
            ELSE null 
        END



FROM technical_document left join tag_document on technical_document.doc_no = tag_document.proj_doc_doc_no


WHERE tag_document.proj_doc_doc_no IS NULL
AND technical_document.project_no like '%%'
AND technical_document.doc_class = ANY ('A','S','SE')
AND technical_document.Lci_Code = ANY ('A','A1','B')

1 Ответ

0 голосов
/ 29 мая 2018

Я бы написал запрос следующим образом:

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