У меня есть следующий код (я использую базу данных Northwind), который дает мне результат, показанный на этом рисунке
SELECT a.FirstName, a.TitleOfCourtesy, a.Notes, c.CustomerYear
FROM employees a
INNER JOIN orders b
ON a.EmployeeID = b.EmployeeID
LEFT JOIN customers c
ON b.CustomerID = c.CustomerID
WHERE a.TitleOfCourtesy = 'Ms.';
Приведенный выше код объединяет три таблицы и выбирает только строки с a.TitleOfCourtesy = 'Ms.'
Из результата я хочу взять строки, в которых %1992%
находится в столбце a.Notes
, и показать только строки, в которых c.CustomerYear
равно 1992. Таким образом, на рисунке выше я должен увидеть только вторую верхнюю строку.
Я думал, что смогу использовать синтаксис CASE + WHEN для создания своего рода оператора IF, но я получаю недопустимое использование синтаксиса только в строке CASE. Должна ли часть CASE быть перемещена после части WHERE или я использую ее совершенно неправильно?
SELECT a.FirstName, a.TitleOfCourtesy, a.Notes, c.CustomerYear
CASE
WHEN a.Notes LIKE '%1992%' THEN c.CustomerYear LIKE '1992'
ELSE NULL END
FROM employees a
INNER JOIN orders b
ON a.EmployeeID = b.EmployeeID
LEFT JOIN customers c
ON b.CustomerID = c.CustomerID
WHERE a.TitleOfCourtesy = 'Ms.';
Как я должен думать, чтобы достичь желаемого результата?
CASE
предназначен для изменения значения в зависимости от строки, но не фильтрует строки.WHERE
предназначен для фильтрации строк. - person Bohemian♦   schedule 22.09.2018