Я пытаюсь сформировать оператор CASE, который будет генерировать фиксированный ответ, если критерии соблюдены, или будет отвечать значением в поле. Я получаю сообщение «800: соответствующие типы данных должны быть совместимы в выражении CASE или функции DECODE». ошибка при выполнении запроса. Насколько я понимаю, это вызвано несовпадением типов ответов, несоответствием формата. Однако ответ f.frequency
представляет собой 9-значное целое число, если оно не равно нулю (поэтому тип f.frequency
— INTEGER).
Это работает:
CASE
WHEN f.frequency is null AND d.appid = 7 THEN '999000000'
ELSE null
END AS frequency,
Или это
CASE
WHEN f.frequency is not null THEN f.frequency
ELSE null
END AS frequency,
но не тогда, когда я объединяю их, как в
CASE
WHEN f.frequency is null AND d.appid = 7 THEN '999000000'
WHEN f.frequency is not null THEN f.frequency
ELSE null
END AS frequency,
или вот так
CASE
WHEN f.frequency is null AND d.appid = 7 THEN '999000000'
ELSE f.frequency
END AS frequency,
CAST(f.frequency AS CHAR(9))
. Это также решило бы проблему. - person Jonathan Leffler   schedule 03.01.2017