У меня возникли проблемы с этим случаем. Я не знаю, что я делаю неправильно, но получаю ошибку:Устранение неполадок с оператором case
Только одно выражение может быть указано в списке выбора, если подзапрос не вводится с EXISTS.
У меня есть случай, когда поле равно значению, а затем левое внешнее объединение, но если поле равно другому значению, тогда сделайте внутреннее соединение. Это мой запрос:
SELECT
case
when oqt = '26' then
(Select qm.id_oqm, cast(isNull(id_eval, '') as varChar(50)) + ' - ' + qm.methodName as methodName, qm.methodName as actualMethod,cv.*
FROM OQMethods QM left outer join courseversions cv on cv.evalid = QM.id_eval and cv.courselanguage = 'EN' and cv.courseactive='Y' and cv.id_cp > 0
WHERE QM.id_oqt in (SELECT tempoq.oqt FROM tempoq INNER JOIN OQMethods ON tempoq.oqt = OQMethods.id_oqt)and active = 1)
END,
case
when oqt = '31' then
(Select qm.id_oqm, cast(isNull(id_eval, '') as varChar(50)) + ' - ' + qm.methodName as methodName, qm.methodName as actualMethod,cv.*
FROM OQMethods QM inner join courseversions cv on cv.evalid = QM.id_eval and cv.courselanguage = 'EN' and cv.courseactive='Y' and cv.id_cp > 0
where QM.id_oqt in (SELECT tempoq.oqt FROM tempoq INNER JOIN OQMethods ON tempoq.oqt = OQMethods.id_oqt) and active = 1)
END
from tempoq
Вы пытаетесь поставить более одного столбца (и более одной строки также, по-видимому) на один столбец, конечно, он пошлет ошибку – Lamak