如何在aws athena的select语句中运行查询生成的查询



我的目标是减少查询长度。

对于每一列,我需要计算ntile()。查询如下

Select col1, n_tile over(order by col1), 
col2, n_tile over(order by col2), ....
From main_table

这是我的尝试。

With columns as(
SELECT column_name 
From information_schema.columns
Where table_name='main_table'),
n_tile_funcs as (
Select column_name, CONCAT('ntile(4) over (order by ', column_name, ' asc)') as ntilefunc 
From columns),
query_tbl as (
Select CONCAT(ARRAY_JOIN(ARRAY_AGG(column_name), ',') ' ,' , ARRAY_JOIN(ARRAY_AGG(ntilefunc), ','))
From n_tile_funcs)

这成功地创建了必须在select语句中运行的东西,但是我无法找出一种方法来使用上面的结果作为select语句。例如

Select (select query from query_tbl)
From main_table

这只是输出main_table中行数的查询字符串。

如何运行查询从查询内的选择语句?

不能在生成动态查询的同一个查询中执行动态查询,句号。

SQL要求给定的语句在解析时是完整的,这是在它开始读取任何值或计算表达式之前。这意味着所有的语法和标识符必须是明确的和固定的。

如果您需要生成一个新的查询,您必须将其存储在一个变量中,并使用动态SQL来准备和执行它作为第二个操作。

相关内容

  • 没有找到相关文章

最新更新