Вопрос запроса Афины
Я получаю проблему SQL в Афине с
SELECT
A_a as [A],
case when 'sva_new_price' then sva_mv
when 'ob_drop' then ob_drop_mv
else NULL end as [X],
0 as [Y],
0 as [Z],
0 as [B],
0 as [C],
0 as [D]
FROM "AB"."BC"
LIMIT 10;
Пожалуйста помоги.
1 ответ
Есть две вещи, которые выделяются, когда я смотрю на запрос:
Во-первых, я не уверен, что имена выходных столбцов, такие как [A]
приемлемы Однако я предполагаю, что вы используете обычные имена столбцов, и вы просто изменили это, чтобы скрыть детали.
Во-вторых, CASE
утверждение не кажется полным:
case when 'sva_new_price' then sva_mv
when 'ob_drop' then ob_drop_mv
else NULL end as [X],
конкретно when 'sva_new_price'
не имеет смысла. Выражение после WHEN
следует оценивать как логическое значение, такое как:
CASE WHEN col1 = 'sva_new_price' THEN col2
Если логическое значение истинно, то выражение после THEN
будет возвращен.
Как упоминал Джон, имя столбца не может быть таким, как [A] в Athena, и ваш запрос должен оцениваться как логическое значение для оператора case.
Другой способ, при котором вы не хотите снова и снова записывать имена столбцов для оценки, - это записывать столбцы до и после регистра один раз. Также я предполагаю, что значение, указанное после этого, является именами столбцов, если это строка, тогда укажите его как 'sva_mv'
`SELECT
A_a as col_1,
case col_2 when 'sva_new_price' then sva_mv
when 'ob_drop' then ob_drop_mv
else NULL end as new_col_name,
0 as [Y],
0 as [Z],
0 as [B],
0 as [C],
0 as [D]
FROM "AB"."BC"
LIMIT 10;`