У меня есть таблица со значениями. Я пытаюсь создать новый столбец, значение строки которого будет зависеть от существующего столбца. Например, в приведенной ниже таблице, если подстрок столбца id из индекса 6 в индекс 7 больше 10, тогда значение нового столбца в этой строке должно быть подстрокой идентификатора в индексе 1-4 *. 1001 * дефис substr (id, 1, 4) +1. Иначе значение должно быть substr (id, 1, 4) -1 дефис substr (id, 1, 4).
id New Column Name
M20061012 2006-2007 Jude
K20070212 2006-2007 Anne
D20071214 2007-2008 John
Вот алгоритм для каждой строки таблицы:
if substr(id, 5, 1) < 10
New Column value at that row = substr(id, 1, 4) - substr(id, 1, 4)+1
else
New Column value at that row = substr(id, 1, 4)-1 - substr(id, 1, 4)
Любая помощь будет принята с благодарностью
Спасибо
EDIT:
Поэтому я попробовал это, как предложено @ scwagner
SELECT
id,
(CASE WHEN CONVERT(SUBSTR(id,6,2), SIGNED) < 10
THEN CONCAT(CONVERT(SUBSTR(id, 2, 4),SIGNED)-1,'-',CONVERT(SUBSTR(id, 2, 4),SIGNED))
ELSE CONCAT(CONVERT(SUBSTR(id, 2, 4),SIGNED),'-',CONVERT(SUBSTR(id, 2, 4),SIGNED)+1) END) AS `New Column`,
Name
FROM new
Где новый - имя таблицы. Но это возвращает столбец со всеми значениями строки = BLOB.
Как я могу это исправить?