Вопрос запроса Афины

Я получаю проблему 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;`
Другие вопросы по тегам