Пожалуйста, обратите внимание на следующие Vertica SQLCODE:Vertica - с п не признается в фактическом запросе
WITH date_range AS
(SELECT YEAR(now() - interval '1' MONTH) ||MONTH(now() - interval '1' MONTH) ||'#'||DATE(TRUNC(now() - interval '1' MONTH, 'mm')) ||'#'||DATE(TRUNC(now(), 'mm') - interval '1' DAY) AS month1
, YEAR(now() - interval '2' MONTH) ||MONTH(now() - interval '2' MONTH) ||'#'||DATE(TRUNC(now() - interval '2' MONTH, 'mm')) ||'#'||DATE(TRUNC(now() - interval '1' MONTH, 'mm') - interval '1' DAY) AS month2
)
SELECT regexp_substr(
(SELECT month1
FROM date_range), '[^#]*', 1, 1)
У меня есть 420 строк длиной запроса, и мне нужно использовать «MONTH1» и «Month2 «как переменные много раз в моем коде. К сожалению, Vertica по-прежнему не поддерживает переменные, поэтому вместо этого я попытался использовать предложение WITH. К сожалению, это не работает, как я получаю следующее сообщение об ошибке:
(4566) ERROR: Relation "date_range" does not exist
Да поможет мне Бог (или переполнения стека)
P.S. для простого обслуживания кода, пожалуйста, не говорите мне удалить «WITH» и просто используйте весь «SELECT YEAR (now() - interval« 1 »MONTH). MONTH (now() - interval '1' MONTH) || '#' || DATE (TRUNC (now() - interval '1' MONTH, 'mm')) || '#' || DATE (TRUNC (now(), 'mm') - interval ' 1 'DAY) '. Он повторяется как минимум 10 раз в моем коде (это эффективно? Да, это так. Это часть автоматически сгенерированного предупреждения. Почему бы вам не использовать join? Потому что это весь код, во многих вложенных запросах и т. Д. Многие Спасибо заранее! –