雅典娜查询问题

时间:2019-02-05 23:22:33

标签: amazon-web-services amazon-athena presto

我在雅典娜遇到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;

请帮助。

2 个答案:

答案 0 :(得分:3)

当我查看查询时,有两件事很突出:

首先,我不确定[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

如果布尔值为true,则将返回THEN之后的表达式。

答案 1 :(得分:0)

John列名提到的名称不能像Athena中的[A]一样,并且您的查询需要对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;`