gpt4 book ai didi

sql - 如何修复 AWS Athena 的 SQL

转载 作者:行者123 更新时间:2023-12-02 02:07:26 26 4
gpt4 key购买 nike

我正在将 SQL 从 Redshift 迁移到 AWS Athena,但我遇到了麻烦,因为 SQL 给了我错误。

SELECT abc_name AS bca_name,
CASE
WHEN name = 'aaa' THEN 'AAC'
WHEN name = 'bbb' THEN 'BBA'
WHEN name = 'ccc' THEN 'CCB'
END AS abc
FROM master_table
WHERE abc IS NOT NULL;

这个 SQL 给了我一个错误:它说没有 abc 列,因为 where 子句中的 abc 比 select 子句中的 abc 读取得早。

我怎样才能让它发挥作用?

最佳答案

这是一个常见的 SQL 问题。您不能引用同一查询的 WHERE 子句中的 SELECT 子句中定义的别名。但您甚至不需要使用别名来获取所需的逻辑,只需使用 WHERE IN (...):

SELECT abc_name AS bca_name,
CASE name WHEN 'aaa' THEN 'AAC'
WHEN 'bbb' THEN 'BBA'
WHEN 'ccc' THEN 'CCB' END AS abc
FROM master_table
WHERE name IN ('aaa', 'bbb', 'ccc');

如果您确实需要引用别名,则必须使用子查询或仅重复 CASE 表达式。对于前一个选项:

SELECT bca_name, abc
FROM
(
SELECT abc_name AS bca_name,
CASE name WHEN 'aaa' THEN 'AAC'
WHEN 'bbb' THEN 'BBA'
WHEN 'ccc' THEN 'CCB' END AS abc
FROM master_table
) t
WHERE abc IS NOT NULL;

关于sql - 如何修复 AWS Athena 的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68219682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com